Kosa cha JavaScript - Throw na Try to Catch

try Inaonyesha inasaidia kufafanua kosa kwenye kipindi cha kusaidia.

catch Inaonyesha inasaidia kusaidia kosa.

throw Ujumbe unaobadilisha kwa kuzingatia kosa zaidi.

finally Inasaidia kufanya makosa, kwenye kipindi cha try na catch, bila kumaliza.

Kosa inatokea na huzio!

Kama inafanyika makosa ya JavaScript, inatokea kosa mbalimbali.

Kosa inaweza kutokea kama kosa ya mtaandaa, kosa kwenye kibidi cha kibidi, au kosa kwenye matatizo yenye uharibifu huzio.

Mfano

Kwenye mivuno hii, tunaelezea kwa kutumia: adddlert Kandaa makosa kwa sababu ya kusaidia kwa kusababisha kosa kwenye makosa ya kusaidia:

<p id="demo"></p>
<script>
try {
    adddlert("Karibu kwa kumtazama!");
}
catch(err) {
    document.getElementById("demo").innerHTML = err.message;
}
</script>

Tukifanya kila msaada

JavaScript inaona adddlert kama kosa, kisha inafanya makosa ya kusaidia kosa.

JavaScript try na catch

try Inaonyesha inasaidia kufafanua kosa kwenye kipindi cha kusaidia kama kosa inatukia kwenye kipindi cha kusaidia.

catch Inaonyesha inasaidia kufafanua makosa kama kosa inatukia kwenye makosa ya try.

Matendo ya JavaScript try na catch Inaonyesha pamoja:

try {
     Makosa ya michezo ya kuandaa
}
 catch(err) {
     Makosa ya kusaidia kosa
} 

JavaScript inaisha kosa

当发生错误时,JavaScript 通常会停止并产生错误消息。

技术术语是这样描述的:JavaScript 将抛出异常(抛出错误).

JavaScript 实际上会创建带有两个属性的 Error 对象:jina na ujumbe.

Ujumbe unaobadilisha

throw Ujumbe unaobadilisha kwa kuzingatia kosa zaidi.

Kwa sababu ya teknolojia inaweza...Kosa kinaonekana kwa sababu ya kosa (kinaonekana kwa kosa).

Kosa kinaweza kinaonekana kwa sababu ya string ya JavaScript, namba, Bolea au kiwango:

throw "Kubwa sana";    // kosa kinaonekana kwa ujumbe
throw 500;          // kosa kinaonekana kwa namba

kama throw na try na catch Kwa sababu ya kusababisha kwa kikati na ujumbe wa kosa wa kuzingatia.

Matokeo ya tathmini ya kuingia

Mbinu hii inakisia kwa kusababisha kwa kikati. Kama thamani inaonekana kosa, kosa kinatokana na kosa (err).

Kosa hiki (err) kinatokana na ujumbe wa catch na kuonyesha ujumbe wa kosa wa kuzingatia:

<!DOCTYPE html>
<html>
<body>
<p>Ingiza namba 5 - 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="message"></p>
<script>
function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "") throw "kimaumini";
         if(isNaN(x)) throw "不是数字";
         x = Number(x);
        if(x < 5) throw "kisikitiko";
        if(x > 10) throw "kubwa sana";
    }
    catch(err) {
        message.innerHTML = "Input ni " + err;
    }
}
</script>
</body>
</html> 

Tukifanya kila msaada

Tathmini ya HTML

Kikata hiki kinahusiana na mbinu.

Mengine mwa kizamani kinaangalia JavaScript na tathmini ya HTML ya kufikia kwa kusababisha kwa kikati kwa kusababisha kwa kikati ya HTML:

<input id="demo" type="number" min="5" max="10" step="1">

Umasababu unaotukia ujumbe zaidi kuhusu tathmini ya foromu kwa kitabaka hiki kuanzia mawili mabaki.

Ujumbe wa finally

finally Ujumbe unaobadilisha kwa kusababisha kufikia kwa try na catch, bila kuzungumza:

try {
     // Kwa sababu ya kufikia matokeo ya michezo
}
 catch(err) {
     // Kwa sababu ya kusikia kosa
} 
finally {
     // Kwa sababu ya kufikia chaguo yoyote inafanyishwa kwa kikati
}

Mfano

function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "") throw "是空的";
        if(isNaN(x)) throw "不是数字";
         x = Number(x);
        if(x >  10) throw "太大";
        if(x <  5) throw "太小";
    }
    catch(err) {
        message.innerHTML = "错误:" + err + ".";
    }
    finally {
        document.getElementById("demo").value = "";
    }
}

Tukifanya kila msaada

Error 对象

JavaScript 拥有当错误发生时提供错误信息的内置 error 对象。

kina ya kina inakupata kina mbili yenye maana kikubwa:jina na ujumbe.

Kina ya Kina ya Kina ya Kina

Kina ya kina Kina cha kina
jina Inakusaidia kuwakilisha na kuwatoa jina la kina
ujumbe Inakusaidia kuwakilisha na kuwatoa ujumbe wa kina (mengine mmoja wa mawili wa kitabii)

Kina ya Kina ya Kina ya Thamani

Kina ya kosa ina maelezo ya name ambayo inatoa kina zingine za kawaida ziliyotumiwa

Jina la kina Kina cha kina
EvalError Kina cha kuingiza kwa eval() kilichokaa
RangeError Kina cha kina cha namba kilichokaa kikikawaida kilichokaa
ReferenceError Kina cha kutumia muwajifunze bila kujulikana kilichokaa
SyntaxError Kina cha kilele cha kilingiliano kilichokaa
TypeError Kina cha kichukua aina bila kibali kilichokaa
URIError Kosa cha kuingiza kwa encodeURI()

Inaonyesha kina hizi zisixi na zingine za kawaida.

Kosa cha Eval

EvalError Inaonyesha kosa kwa kifaa cha eval()

Mjikamano mpya wa JavaScript haikupungua kwa kushika kosa EvalErrorTumia SyntaxError Inapungua.

Kosa cha kikawaida cha namba

RangeError Inakutumia kosa kama ume tumia namba inayotumiwa kwa kina cha kikawaida cha thamani.

Mfano: Huwezi kutumia 500 maelezo kwa namba.

Mfano

var num = 1;
try {
    num.toPrecision(500);   // Namba haikupatikana kwa kuwa na 500 maelezo
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Tukifanya kila msaada

Kosa cha kutumia muwajifunze

Kama una tumia ( kutumia) muwajifunze wa haujajulikana ReferenceError Inakutumia kosa:

Mfano

var x;
try {
    x = y + 1;   // y haikupatikana kwa kutumika ( kutumia)
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Tukifanya kila msaada

Kosa cha kilele cha kilingiliano

Kama unaingiza kwa uwanja wa kiingiliano kwa kifaa cha kifaa kinachofikia kosa SyntaxError Inayotumiwa:

Mfano

try {
    eval("alert('Hello)");   // Kusababisha kufikia kosa kwa '
}
catch(err) {
     document.getElementById("demo").innerHTML = err.name;
} 

Tukifanya kila msaada

Kuchukua aina bila kibali

Kama hujafiki kwamba thamani au haujafikia kikawaida cha thamani chako TypeError Inayotumiwa:

Mfano

var num = 1;
try {
    num.toUpperCase();   // Hatukwenda kufungua kwa sababu ya kufungua kwa sababu ya kufungua
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Tukifanya kila msaada

Matokeo wa kuzingatia URI

Kama unaingia chakula cha URI na viwango vya uangalifu, ni kwamba: URIError Inayotumiwa:

Mfano

try {
    decodeURI("%%%");   // Hatukwenda kufungua kwa sababu ya kufungua kwa sababu ya kufungua
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Tukifanya kila msaada

Viwango vya kina cha kina cha error vya uangalifu

Mozilla na Microsoft walichukua viwango vya kiwango cha kuzingatia vya kina cha error kwa uangalifu:

  • fileName (Mozilla)
  • lineNumber (Mozilla)
  • columnNumber (Mozilla)
  • stack (Mozilla)
  • description (Microsoft)
  • number (Microsoft)

Hutahidi kuionyesha kwa tovuti za jumuiya kwa sababu viwango hivyo vinasababisha kwa kawaida. Hivyo, hatutumia kwa kawaida.