throw / throws
رمي الإعلان الاستثناء throw / throws
throw تُ扔 استثناء من داخل دالة. throws تُعلن أن الدالة قد تُ扔 استثناء ويجب على المنادي التعامل معه.
throw تُنشئ وتُ扔 كائن استثناء جديد — تُستخدم عندما يكتشف الكود حالة غير صالحة. throws تُضاف لتوقيع الدالة لإبلاغ المترجم أن الدالة قد تُ扔 checked exception فيجب على المنادي معالجتها أو الإعلان عنها.
الصياغة
void setAge(int age) throws IllegalArgumentException {
if (age < 0) throw new IllegalArgumentException("سالب");
}
// Checked exceptions:
void readFile(String path) throws IOException { ... }📄 مثال
void withdraw(double amount) {
if (amount <= 0) {
throw new IllegalArgumentException("المبلغ يجب أن يكون موجبًا");
}
if (amount > balance) {
throw new ArithmeticException("رصيد غير كافٍ");
}
balance -= amount;
}أهم النقاط
| العنصر | الوظيفة |
|---|---|
| throw new Ex() | يرمي استثناء جديد — يوقف تنفيذ الدالة الحالية |
| throws Type | يُعلن أن الدالة قد تُ扔 استثناء — يُنصح المُنادي بمعالجة أو الإعلان |
| checked | استثناء مُفحص مثل IOException — يجب التعامل معها إجباريًا |
| unchecked | استثناء غير مُفحص مثل IllegalArgumentException — اختياري |
💡 نصائح عملية
- أعد استخدام الأنواع المتوفرة (IllegalArgumentException, IllegalStateException) قدر الإمكان
- أنشئ استثناءات مخصصة للمشروع الكبيرة لتوضيح أنواع الأخطاء
⚠️ أخطاء شائعة
- throw بدل throws في توقيع الدالة — خطأ ترجمة
- إنشاء استثناء عام Exception بدل النوع المحدد — يُضعف قابلية المعالجة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.