Avatar ·

الاستثناءات المُفحَصة وغير المُفحَصة في Java: ما الفرق وكيفية استخدامها؟

مرحباً بالجميع. بدأت تعلم Java ولا أستطيع فهم الفرق بين الاستثناءات checked (المُفحَصة) و unchecked (غير المُفحَصة). قرأت الوثائق، لكني ما زلت مرتبكاً عملياً.\n\nعلى سبيل المثال، أكتب دالة بسيطة تقرأ ملفاً:\n\n```java\npublic void readFile(String path) {\n FileReader file = new FileReader(path);\n BufferedReader reader = new BufferedReader(file);\n String line = reader.readLine();\n System.out.println(line);\n}\n```\n\nالمُجمّع (compiler) يشتكي من `FileReader` و `readLine()` - يقول إنه يجب معالجة `FileNotFoundException` و `IOException`. أضعها في `try-catch` ويعمل كل شيء. لكن بعد ذلك أكتب دالة تقسم الأعداد:\n\n```java\npublic int divide(int a, int b) {\n return a / b;\n}\n```\n\nإذا مررت `b = 0`، يتعطل البرنامج