8. Error Handling — غلطی کا انتظام
Difficulty: Intermediate — متوسط
Time: ~20 minutes
Why Handle Errors? — غلطی کیوں سنبھالیں؟
When something goes wrong (bad input, missing file, network error), Urdu PL throws an error. Without handling it, the program crashes. With کوشش/پکڑو, you catch the error and respond gracefully.
اردو: غلطی آنے پر پروگرام رک جاتا ہے۔
کوشش/پکڑوسے غلطی پکڑیں اور پروگرام چلتا رہے۔
Try / Catch — کوشش / پکڑو
کوشش {
لکھو("شروع");
پھینکو نیا غلطی("کچھ غلط ہوا");
لکھو("یہ نہیں چلے گا");
} پکڑو (غ) {
��کھو(`پکڑی: ${غ.message}`);
}
Output:
Pattern:
اردو:
کوششمیں وہ کوڈ جو غلطی دے سکتا ہے۔پکڑومیں غلطی کا نام لکھیں — اس سے غلطی کا پیغام (غ.message) ملتا ہے۔
Finally — آخر
آخر always runs, whether an error occurred or not:
کو��ش {
لکھو(10 / 2);
} پکڑو (غ) {
لکھو(`خطا: ${غ.message}`);
} آخر {
لکھو("آخر — ہمیشہ چلتا ہ��");
}
Output:
اردو:
آخرکا کوڈ ہمیشہ چلتا ہے — غلطی آئے یا نہ آئے۔ فائل بند کرنے یا صفائی کے لیے مفید۔
Throwing Errors — غلطی پھینکنا
فنکشن تقسیم(الف, ب) {
اگر (ب == 0) {
پھینکو نیا غلطی("صفر سے تقسیم ممنوع");
}
واپس الف / ب;
}
کوشش {
لکھو(تقسیم(10, 2)); // 5.0
لکھو(تقسیم(10, 0)); // throws!
} پکڑو (غ) {
لکھو(`خطا: ${غ.message}`);
}
Output:
Input Validation Pattern — ان پٹ جانچ
فنکشن عمر_جانچیں(عمر) {
اگر (نان_ہے(عمر)) {
پھینکو نیا غلطی("عمر عدد ہونی ��اہیے");
}
اگر (عمر < 0 یا عمر > 150) {
پھینکو نیا غلطی(`غلط عمر: ${عمر}`);
}
واپس سچ;
}
کوشش {
عمر_جانچیں(عدد("abc")); // NaN
} پکڑو (غ) {
لکھو(`خطا: ${غ.message}`);
}
کوشش {
عمر_جانچیں(-5);
} پکڑو (غ) {
لکھ��(`خطا: ${غ.message}`);
}
Nested Try/Catch — اندرونی کوشش/پکڑو
کوشش {
کوشش {
پھینکو نیا غلطی("اندرونی غلطی");
} پکڑو (اندرونی_غ) {
لکھو(`اندر: ${اندرونی_غ.message}`);
پھینکو نیا غلطی("دوبارہ پھینکی");
}
} پکڑو (باہری_غ) {
لکھو(`باہر: ${باہری_غ.message}`);
}
Practical Example: Safe Calculator — عملی مثال: محفوظ کیلکولیٹر
فنکشن محفوظ_تقسیم(الف_م, ب_م) {
کوشش {
متغیر الف = اعشاریہ(الف_م);
متغیر ب = اعشاریہ(ب_م);
اگر (نان_ہے(الف) یا نان_ہے(ب)) {
پھینکو نیا غلطی("دونوں قدریں اعداد ہونی چاہئیں");
}
اگر (ب == 0) {
پھینکو نیا غلطی("صفر سے تقسیم ممنوع");
}
واپس الف / ب;
} پکڑو (غ) {
واپس `خطا: ${غ.message}`;
}
}
لکھو(محفوظ_��قسیم("10", "4")); // 2.5
لکھو(محفوظ_تقسیم("10", "0")); // خطا: صفر سے تقسیم ممنوع
لکھو(محفوظ_ت��سیم("10", "abc")); // خطا: دونوں قدریں اعداد ہونی چاہئیں
Key Points — اہم نکات
کوشش { ... } پکڑو (غ) { ... }— catch errorsآخر { ... }— always runs (cleanup code)پھینکو نیا غلطی("پیغام")— throw an errorغ.message— the error message- Wrap risky code (type conversion, division, external calls) in
کوشش
اردو:
کوششمیں خطرناک کوڈ،پکڑومیں غلطی سنبھالیں،آخرصفائی کے لیے۔پھینکوسے اپنی غلطی بنائیں۔