ما هي فئة Throwable؟ فئة Throwable هي فئة فائقة لجميع الأخطاء أو الاستثناءات في لغة Java، وهي فئة شائعة تدمج جميع الاستثناءات، وتتمثل مهمتها في استخراج معلومات الخطأ المخزنة في المكدس.
فئة الخطأ هي فئة فرعية من فئة Throwable، بما في ذلك استثناءات النظام واستثناءات الجهاز الظاهري والمشكلات الأخرى التي لا يمكن للمستخدمين منعها.
فئة الاستثناء هي أيضًا فئة فرعية من فئة Throwable، وهي استثناءات يمكن للبرنامج نفسه التعامل معها، وهي مقسمة إلى استثناءات وقت التشغيل (محددة) واستثناءات غير وقت التشغيل (غير محددة). قد تتم أو لا تتم معالجة استثناءات وقت التشغيل؛ ويجب معالجة الاستثناءات غير المتعلقة بوقت التشغيل.
استثناءات وقت التشغيل هي جميع استثناءات فئة RuntimeException وفئاتها الفرعية، مثل NullPointerException وIndexOutOfBoundsException وما إلى ذلك. لم يتم تحديد هذه الاستثناءات ويمكن التقاطها أو عدم معالجتها في البرنامج. عادةً ما تكون هذه الاستثناءات ناتجة عن أخطاء منطقية في البرنامج، ويجب أن يحاول البرنامج تجنب حدوث مثل هذه الاستثناءات من منظور منطقي.
عند حدوث RuntimeException، لا نحتاج إلى التعامل معه، وعادةً ما يتولى الجهاز الظاهري المهمة.
بعد حدوث استثناء في وقت التشغيل، إذا لم يتم اكتشاف الاستثناء ومعالجته (أي لا يوجد التقاط)، فسيقوم النظام بطرح الاستثناء على طول الطريق إلى الطبقة العليا Thread.run(). إذا كان خيطًا واحدًا، فسيتم طرحه بواسطة Thread.run(). بعد الرمي، إذا كان خيطًا، فسيخرج الخيط. إذا تم طرح الاستثناء بواسطة البرنامج الرئيسي، فسيخرج البرنامج بأكمله. استثناءات وقت التشغيل هي فئات فرعية من فئة الاستثناء ولها أيضًا خصائص الاستثناءات العامة، أي أنه يمكن التعامل معها من خلال كتل الالتقاط. إنه مجرد أننا غالبًا لا نتعامل معها، وهذا يعني أنه إذا لم تتعامل مع استثناءات وقت التشغيل، فبعد حدوث استثناء في وقت التشغيل، إما أن ينتهي مؤشر الترابط أو سينتهي البرنامج الرئيسي.
إذا كنت لا ترغب في الإنهاء، فيجب عليك التقاط كافة استثناءات وقت التشغيل وعدم السماح مطلقًا بخروج مؤشر ترابط المعالجة هذا. إذا ظهرت بيانات غير طبيعية في قائمة الانتظار، فيجب أن تكون المعالجة العادية هي التخلص من البيانات غير الطبيعية ثم تسجيل السجل. يجب ألا يؤثر وجود بيانات غير طبيعية على المعالجة اللاحقة للبيانات العادية.
الاستثناءات غير المتعلقة بوقت التشغيل هي استثناءات أخرى غير RuntimeException، وجميعها تنتمي إلى فئة الاستثناء وفئاتها الفرعية. على سبيل المثال: IOException، وSQLException، وما إلى ذلك، والاستثناءات المحددة من قبل المستخدم. بالنسبة لهذا النوع من الاستثناءات، يجبرنا مترجم Java على التقاط هذه الاستثناءات والتعامل معها، وإلا فلن يتم تجميع البرنامج. لذلك، عند مواجهة هذا النوع من الاستثناءات، سواء أحببنا ذلك أم لا، يتعين علينا كتابة الكثير من كتل الالتقاط للتعامل مع الاستثناءات المحتملة.