JavaScript အမှားများ
ပစ်၊ စမ်း... ဖမ်း... နောက်ဆုံး
အဆိုပါ try
ထုတ်ပြန်ချက်တွင် run (ကြိုးစားရန်) ကုဒ်ပိတ်ဆို့ခြင်းကိုသတ်မှတ်သည်။
ထုတ်ပြန်ချက် catch
သည် အမှားအယွင်းမှန်သမျှကို ကိုင်တွယ်ရန် ကုဒ်ပိတ်ဆို့ခြင်းကို သတ်မှတ်သည်။
ထုတ်ပြန်ချက် finally
သည် ရလဒ်မည်သို့ပင်ဖြစ်စေ လုပ်ဆောင်ရန် ကုဒ်ပိတ်ဆို့ခြင်းကို သတ်မှတ်သည်။
ထုတ်ပြန်ချက်တွင် throw
စိတ်ကြိုက်အမှားကို သတ်မှတ်သည်။
အမှားများ ကြုံမည်။
JavaScript ကုဒ်ကို လုပ်ဆောင်သောအခါ မတူညီသော အမှားများ ဖြစ်ပေါ်လာနိုင်သည်။
အမှားများသည် ပရိုဂရမ်မာမှ ပြုလုပ်သော ကုဒ်ရေးခြင်းဆိုင်ရာ အမှားများ၊ မှားယွင်းသော ထည့်သွင်းမှုကြောင့် အမှားအယွင်းများနှင့် အခြားသော မှန်းဆ၍မရသော အရာများ ဖြစ်နိုင်သည်။
ဥပမာ
ဤဥပမာတွင် ကျွန်ုပ်တို့သည် အမှားတစ်ခုကို တမင်တကာ ဖန်တီးရန် "သတိပေးချက်" ကို "adddlert" ဟု စာလုံးပေါင်းမှားသည်-
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
JavaScript သည် adddler ကို အမှားတစ်ခုအဖြစ် ဖမ်းယူပြီး ၎င်းကိုကိုင်တွယ်ရန် catch code ကို လုပ်ဆောင်သည်။
JavaScript ကို ကြိုးစားပြီး ဖမ်းပါ။
အဆိုပါ try
ထုတ်ပြန်ချက်သည် သင့်အား လုပ်ဆောင်နေချိန်တွင် အမှားများအတွက် စမ်းသပ်ရမည့် ကုဒ်တစ်ခုအား သတ်မှတ်သတ်မှတ်နိုင်စေမည်ဖြစ်သည်။
catch
try block တွင် အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ပါက လုပ်ဆောင်ရန် ကုဒ်တစ်ခုအား သတ်မှတ်ဖော်ပြချက်သည် သင့်အား သတ်မှတ်ခွင့်ပြုသည် ။
JavaScript ထုတ်ပြန်ချက်များ try
နှင့် catch
အတွဲလိုက် ပေါ်လာသည်-
try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}
JavaScript သည် အမှားများကို လွှင့်ပစ်သည်။
error တစ်ခုဖြစ်ပွားသောအခါ၊ JavaScript သည် ပုံမှန်အားဖြင့် ရပ်သွားပြီး error message ကိုထုတ်ပေးလိမ့်မည်။
ဤအရာအတွက် နည်းပညာဆိုင်ရာ အသုံးအနှုန်းမှာ- JavaScript သည် ခြွင်းချက်တစ်ခု (အမှားတစ်ခုကို လွှင့်ပစ်သည်) ။
JavaScript သည် ဂုဏ်သတ္တိ နှစ်ခုပါရှိသော Error object တစ်ခုကို ဖန်တီးပေးမည် ဖြစ်သည်- အမည် နှင့် မက်ဆေ့ချ် ။
အရှင်သာရိပုတ္တရာ ထုတ်ပြန်ချက်
အဆိုပါ throw
ထုတ်ပြန်ချက်သည် သင့်အား စိတ်ကြိုက်အမှားတစ်ခုဖန်တီးနိုင်စေပါသည်။
နည်းပညာအရ သင်သည် ခြွင်းချက်တစ်ခု (အမှားတစ်ခုကို လွှင့်ပစ်) နိုင်သည်။
ခြွင်းချက်မှာ JavaScript String
၊ a Number
၊ a Boolean
သို့မဟုတ် တစ်ခု ဖြစ်နိုင်သည် Object
။
throw "Too big"; // throw a text
throw 500; // throw a number
အကယ်၍ သင်သည် နှင့် တွဲသုံးပါက ၊
throw
သင်သည် ပရိုဂရမ်စီးဆင်းမှုကို ထိန်းချုပ်နိုင်ပြီး စိတ်ကြိုက် အမှားမက်ဆေ့ချ်များကို ဖန်တီးနိုင်သည်။try
catch
ထည့်သွင်းအတည်ပြုခြင်း ဥပမာ
ဤဥပမာသည် ထည့်သွင်းမှုကို ဆန်းစစ်သည်။ တန်ဖိုး မှားပါက ခြွင်းချက် (err) ကို ချပစ်လိုက်သည်။
ခြွင်းချက် (err) ကို catch statement မှဖမ်းမိပြီး စိတ်ကြိုက် error message ကို ပြသသည်-
<!DOCTYPE html>
<html>
<body>
<p>Please input a number between
5 and 10:</p>
<input id="demo" type="text">
<button type="button"
onclick="myFunction()">Test Input</button>
<p id="p01"></p>
<script>
function myFunction() {
const message =
document.getElementById("p01");
message.innerHTML = "";
let x =
document.getElementById("demo").value;
try {
if(x == "") throw "empty";
if(isNaN(x)) throw "not a number";
x = Number(x);
if(x < 5) throw
"too low";
if(x > 10) throw "too
high";
}
catch(err) {
message.innerHTML =
"Input is " + err;
}
}
</script>
</body>
</html>
HTML အတည်ပြုခြင်း
အထက်ပါ code သည် ဥပမာတစ်ခုမျှသာဖြစ်သည်။
ခေတ်မီဘရောက်ဆာများသည် HTML ရည်ညွှန်းချက်များတွင် သတ်မှတ်ထားသော ကြိုတင်သတ်မှတ်ထားသော တရားဝင်အတည်ပြုခြင်းစည်းမျဉ်းများကို အသုံးပြု၍ JavaScript နှင့် built-in HTML validation တို့ကို ပေါင်းစပ်အသုံးပြုလေ့ရှိသည်-
<input id="demo" type="number" min="5" max="10" step="1">
ဤသင်ခန်းစာ၏ နောက်ပိုင်းအခန်းတွင် ဖောင်များအတည်ပြုခြင်းအကြောင်း ပိုမိုဖတ်ရှုနိုင်ပါသည်။
နောက်ဆုံးထုတ်ပြန်ချက်
အဆိုပါ finally
ထုတ်ပြန်ချက်တွင်ရလဒ်မည်သို့ပင်ဖြစ်စေကြိုးစားဖမ်းပြီးနောက်၊ ကုဒ်ကိုလုပ်ဆောင်နိုင်သည်-
အထားအသို
try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}
finally {
Block of code to be executed regardless of the try / catch result
}
ဥပမာ
function myFunction() {
const message =
document.getElementById("p01");
message.innerHTML = "";
let x =
document.getElementById("demo").value;
try {
if(x == "") throw "is empty";
if(isNaN(x))
throw "is not a number";
x = Number(x);
if(x >
10) throw "is too high";
if(x <
5) throw "is too low";
}
catch(err)
{
message.innerHTML = "Error: " +
err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
Error Object ပါ။
JavaScript တွင် error တစ်ခုဖြစ်လာသောအခါတွင် error information ကိုပေးဆောင်သော built in error object တစ်ခုရှိသည်။
error object သည် အသုံးဝင်သော ဂုဏ်သတ္တိနှစ်ခုကို ပေးဆောင်သည်- အမည်နှင့် မက်ဆေ့ချ်။
Object Properties အမှား
ပစ္စည်းဥစ္စာ | ဖော်ပြချက် |
---|---|
နာမည် | အမှားအမည်တစ်ခု သတ်မှတ်ခြင်း သို့မဟုတ် ပြန်ပေးသည်။ |
သတင်းစကား | အမှားအယွင်း မက်ဆေ့ချ် (စာကြောင်းတစ်ခု) သတ်မှတ်ခြင်း သို့မဟုတ် ပြန်ပေးသည် |
အမှားအမည်တန်ဖိုးများ
အမှားအမည် ပိုင်ဆိုင်မှုဖြင့် မတူညီသော တန်ဖိုးခြောက်ခုကို ပြန်ပေးနိုင်ပါသည်။
အမှားအမည် | ဖော်ပြချက် |
---|---|
EvalError | eval() လုပ်ဆောင်ချက်တွင် အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ |
RangeError | နံပါတ်တစ်ခု "အပိုင်းအခြား" ဖြစ်သွားသည်။ |
အကိုးအကားအမှား | တရားမဝင်ကိုးကားမှုတစ်ခု ဖြစ်ပွားခဲ့သည်။ |
SyntaxError | အထားအသို အမှားတစ်ခု ဖြစ်ပွားခဲ့သည်။ |
စာရိုက်အမှား | အမျိုးအစား အမှားတစ်ခု ဖြစ်ပွားခဲ့သည်။ |
URI အမှား | encodeURI() တွင် အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ |
မတူညီသောတန်ဖိုးခြောက်ခုကို အောက်တွင်ဖော်ပြထားပါသည်။
Eval အမှား
EvalError
eval() လုပ်ဆောင်ချက်တွင် အမှားအယွင်း တစ်ခုကို ညွှန်ပြသည်။
JavaScript ၏အသစ်ထွက်ဗားရှင်းများသည် EvalError ကိုမစွန့်ပစ်ပါ။ ၎င်းအစား SyntaxError ကိုသုံးပါ။
အပိုင်းအခြားအမှား
RangeError
တရား၀င်တန်ဖိုးများအကွာအဝေးပြင်ပရှိ နံပါတ်တစ်ခုကို သင်အသုံးပြုပါက A သည် လွှတ်တင်မည်ဖြစ်သည်။
ဥပမာ- ဂဏန်းတစ်ခု၏ သိသာထင်ရှားသောဂဏန်းအရေအတွက်ကို 500 သို့ သင်မသတ်မှတ်နိုင်ပါ။
ဥပမာ
let num = 1;
try {
num.toPrecision(500); // A number cannot have 500
significant digits
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
အကိုးအကားအမှား
ReferenceError
မကြေငြာရသေးသော variable (ကိုးကား) ကိုအသုံးပြုပါက A ကို လွှတ်ချလိုက်သည် ။
ဥပမာ
let x = 5;
try {
x = y + 1; // y cannot be used (referenced)
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Syntax အမှား
SyntaxError
အ ထားအသိုအမှားအယွင်းဖြင့် ကုဒ်ကို အကဲဖြတ်ရန် ကြိုးစားပါက A သည် လွှတ်တင်မည်ဖြစ်သည်။
ဥပမာ
try {
eval("alert('Hello)"); //
Missing ' will produce an error
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Error ရိုက်ပါ။
TypeError
မျှော်လင့်ထားသောအမျိုးအစားများ၏အကွာအဝေးအပြင်ဘက်ရှိတန်ဖိုးကိုသင်အသုံးပြုပါက A ကိုပစ်သည်-
ဥပမာ
let num = 1;
try {
num.toUpperCase(); // You cannot convert a number
to upper case
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
URI (Uniform Resource Identifier) အမှား
URIError
URI လုပ်ဆောင်ချက်တွင် တရားမဝင်သော စာလုံးများကို သင်အသုံးပြုပါက A ကို ဖယ်ရှားသည်-
ဥပမာ
try {
decodeURI("%%%"); // You cannot URI decode
percent signs
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Standard မဟုတ်သော Error Object Properties
Mozilla နှင့် Microsoft တို့က စံမဟုတ်သော အမှားအယွင်းအရာဝတ္ထုအချို့ကို သတ်မှတ်ဖော်ပြသည်-
ဖိုင်အမည် (Mozilla)
လိုင်းနံပါတ် (Mozilla)
ကော်လံနံပါတ် (Mozilla)
stack (Mozilla)
ဖော်ပြချက် (Microsoft)
နံပါတ် (Microsoft)
အများသူငှာ ဝဘ်ဆိုက်များတွင် ဤဂုဏ်သတ္တိများကို မသုံးပါနှင့်။ ၎င်းတို့သည် browser အားလုံးတွင်အလုပ်လုပ်မည်မဟုတ်ပါ။
အမှားအယွင်း ကိုးကားချက် အပြီးသတ်ပါ။
Error object ၏ အပြည့်အစုံကိုးကားရန်အတွက်၊ ကျွန်ုပ်တို့၏ Complete JavaScript Error Reference သို့ သွားပါ ။