JS Алдаатай ажиллах Throw ба Try Catch
try
нь блок кодын алдааг шалгадаг. catch
нь алдааг зохицуулдаг. throw
нь алдаа үүсгэдэг. finally
нь үр дүнг үл хамааран кодыг гүйцэтгэх боломжийг олгоно.
Error буюу алдаа
Кодыг гүйцэтгэх явцад өөр өөр алдаа өгөх болно.
Програм зохиогчийн кодын алдаа, буруу оруулсан алдаа, болон урьдчилан таамаглах боломжгүй алдаа байж болно.
Жишээ нь
<p id="test"></p>
<script>
try {
abcd("Сайн уу найзуудаа!");
}
catch(err) {
document.getElementById("test").innerHTML = err.message;
}
</script>
catch
нь abcd алдааг барих болно. Хувьсагч зарлагдаагүй байгааг анзаарна уу.
try болон catch
try
нь блок кодыг гүйцэтгэх явцад алдаа байгаа эсэхийг шалгадаг.
Хэрэв блок кодод алдаа гарвал catch
нь тухайн алдааг барих болно.
try
болон catch
нь хосоороо ажиллах болно.
Жишээ нь
<script>
try {
/* Блок код энд байна */
}
catch(err) {
/* Блок код энд байна */
}
</script>
Throw Error
Алдаа гарвал JavaScript нь ихэвчлэн зогсч, алдааны мэдэгдэл үүсгэдэг.
Техникийн хэллэг нь throw an exception эсвэл (throw an error) гэдэг. Энэ хичээлээр exception хэллэгийг ашиглах болно.
JavaScript-н Error объект нь name болон message гэсэн хоёр шинж чанартай.
Throw
throw
нь тооцоолж болох алдаа үүсгэх боломжийг олгодог.
JavaScript-д exception нь string
, number
, boolean
,object
байж болно.
Жишээ нь
<script>
throw "Хэт бага"
throw 404
</script>
Хэрэв throw
-г try
болон catch
хослуулан ашиглавал алдааны урсгалыг хянах, мэдэгдэл үүсгэх боломжтой юм.
Оролтыг баталгаажуулах жишээ авч үзье
Жишээ нь гараас утга авна. Хэрэв гараас авсан утга буруу байвал exception(err) нь thrown-д заасан утгыг буцаах болно.
Жишээ нь
<p>10 аас 20 ийн хооронд тоо оруулна уу:</p>
<input id="test" type="text">
<button type="button" onclick="myFunc()">Тоо оруулна уу</button>
<p id="hariu"></p>
<script>
function myFunc() {
var msg, x;
msg = document.getElementById("hariu");
msg.innerHTML = "";
n = document.getElementById("test").value;
try {
if(n == "") throw "Хоосон байна";
if(isNaN(n)) throw "NaN буюу тоо биш байна";
n = Number(n);
if(n < 10) throw "Хэт бага";
if(n > 20) throw "Хэт их";
}
catch(err) {
msg.innerHTML = "Оруулсан тоо нь " + err;
}
}
</script>
Finally
finally
нь үр дүнг үл хамааран кодыг гүйцэтгэх боломжийг олгоно.
Бичиглэл
<script>
try {
Блок код
}
catch(err) {
Алдаа засах блок код
}
finally {
Try / catch үр дүнгээс үл хамааран гүйцэтгэх кодын блок
}
</script>
Жишээ нь
<p>10 аас 20 ийн хооронд тоо оруулна уу:</p>
<input id="test" type="text">
<button type="button" onclick="myFunc()">Тоо оруулна уу</button>
<p id="hariu"></p>
<script>
function myFunc() {
var msg, x;
msg = document.getElementById("hariu");
msg.innerHTML = "";
n = document.getElementById("test").value;
try {
if(n == "") throw "Хоосон байна";
if(isNaN(n)) throw "NaN буюу тоо биш байна";
n = Number(n);
if(n < 10) throw "Хэт бага";
if(n > 20) throw "Хэт их";
}
catch(err) {
msg.innerHTML = "Оруулсан тоо нь " + err;
}
finally {
document.getElementById("test").value = "Сайн уу Finally";
}
}
</script>
Объектын алдаа
JavaScript нь алдаа гарах үед мэдээлэл өгдөг алдааны объекттой байдаг.
Алдааны объект нэр ба мессеж гэсэн хоёр шинж чанарын алдааг өгдөг.
Шинж чанар | Тайлбар |
---|---|
name | Алдаатай нэрийг буцаах болно |
message | Алдаатай мэдэгдэлийг буцаах болно |
Name-н алдаа
Error Name | Тайлбар |
---|---|
EvalError | Eval () функцэд алдаа гарсан |
RangeError | Хязгаараас давсан байна |
ReferenceError | Зөвшөөрөгдөөгүй лавлагаа |
SyntaxError | Бичиглэлийн алдаа |
TypeError | Төрлийн алдаа |
URIError | encodeURI() алдаа |
Дээрх зургаан утгыг дор тайлбарлав.
Eval Error
EvalError
нь eval() функцийн алдааг илэрхийлнэ.
JavaScript нь EvalError функцийн оронд SyntaxError-г ашигладаг.
Range Error
Хэрэв хэмжээнээс хэтэрсэн тоог ашиглавал RangeError
алдааг өгнө. toPrecision()
функц нь аргументаар 1-ээс 100-н хооронд л утга авах болно.
Жишээ нь
<p id="test"></p>
<script>
var too = 1;
try {
too.toPrecision(101);
}
catch(err) {
document.getElementById("test").innerHTML = err;
}
</script>
Reference Error
Хэрэв та зарлаагүй хувьсагчийг ашиглавал ReferenceReeor алдаа өгнө.
Жишээ нь
<script>
var n;
try {
n = m + 1; /* m хувьсагч зарлаагүй байна. */
}
catch(err) {
document.getElementById("test").innerHTML = err.name;
}
</script>
Syntax Error
Кодод үнэлэх үед бичиглэлийн алдаа гарвал SyntaxError
алдаа өгнө.
Жишээ нь
<script>
try {
eval("alert('Сайн уу)");
}
catch(err) {
document.getElementById("test").innerHTML = err.name;
}
</script>
Type Error
Хүлээгдэж буй төрлөөс өөр утга орж ирвэл TypeError
алдаа өгнө.
Жишээ нь
<script>
var n = 10;
try {
n.toUpperCase(); /* Тоог том үсгээр бичиж болохгүй. Үсгийг болно */
}
catch(err) {
document.getElementById("test").innerHTML = err.name;
}
</script>
URI Error буюу (Uniform Resource Identifier)
URI функцэд зөвшөөрөгдөөгүй тэмдэгт ашиглавал URIError
алдаа өгнө.
Жишээ нь
<script>
try {
decodeURI("%%%");
}
catch(err) {
document.getElementById("test").innerHTML = err.name;
}
</script>