3.0 KiB
title | localeTitle |
---|---|
Error Handling and Try Catch Throw | خطأ في التعامل ومحاولة رمي الصيد |
خطأ في التعامل ومحاولة رمي الصيد
يمثل try...catch..finally
statement عبارة عن مجموعة من العبارات للتجربة ، ويحدد استجابة ، في حالة طرح استثناء. في try
يحتوي على عبارة واحدة أو أكثر من البيانات، واحد على الأقل catch
بند أو finally
فقرة، أو كليهما.
try...catch
`try { throw new Error('my error'); } catch (e) { console.error(e.message); }
// Output: // my error `
try...finally
:
`try { throw new Error('my error'); } finally { console.error('finally'); }
// Output: // finally `
ملاحظة: عندما لا catch
الخطأ ، فإنه في الواقع لا "يصطاد" ، حتى لو تم تنفيذ الحظر finally
. وهذا يعني أن الخطأ سيستمر في كتلة try
العليا (أو الكتلة الرئيسية).
try...catch...finally
:
`try { throw new Error('my error'); } catch (e) { console.error(e.message); } finally { console.error('finally'); }
// Output: // my error // finally `
الاستخدام النموذجي:
try { openFile(file); readFile(file) } catch (e) { console.error(e.message); } finally { closeFile(file); }
try...catch
متداخلة try...catch
بامكانك ايضا:
- اعتبر عبارة
try-catch
داخل كتلةtry
. - رمي الخطأ صعودا.
`try { try { throw new Error('my error'); } catch (e) { console.error('inner', e.message); throw e; } finally { console.log('finally'); } } catch (e) { console.error('outer', e.message); }
// Output: // inner my error // finally // outer my error `
أنواع الخطأ
خطأ مرجعي
var x; try { x = y + 1; // y cannot be referenced (used) } catch(err) { console.log(err.name, err.message); } // ReferenceError y is not defined
خطأ في بناء الجملة
try { eval("alert('Hello)"); // Missing ' will produce an error } catch(err) { console.log(err.name,err.message); } // SyntaxError Invalid or unexpected token
خطأ مطبعي
var num = 1; try { num.toUpperCase(); // You cannot convert a number to upper case } catch(err) { console.log(err.name, err.message); } // TypeError num.toUpperCase is not a function
خطأ URI
try { decodeURI("%%%"); // You cannot URI decode these percent signs } catch(err) { console.log(err.name, err.message); } // URIError URI malformed