+1 امتیاز
قبل در برنامه نویسی توسط (467 امتیاز)
ویرایش شده قبل توسط

در آموزش‌ های جاوا کاپ در قسمت Exception Handling، گفته شده که اگر متدی در کلاس پدر استثنایی را پرتاب نکند و همان متد را در کلاس قرزند Override کنیم و سپس آن متد Override شده استثنایی را پرتاب کند، با خطای کامپایل مواجه می‌شویم. به دلیل اینکه رابطه‌ی IS-A را نقض کرده‌ایم. اما به کد زیر توجه کنید:

package com.google;

class Parent {
    void f() {
        System.out.println("Parent");
    }
}
class Child extends Parent {
    @Override
    void f() {
        System.out.println("Child");
        throw new ArithmeticException();
    }
}
public class MainApp {

    public static void main(String[] args) {
        new Child().f();
    }

}

برنامه‌ی بالا با خطای کامپایل مواجه نمیشه؟ علت چیست؟

قبل توسط (186 امتیاز)
https://stackoverflow.com/questions/2190161/difference-between-java-lang-runtimeexception-and-java-lang-exception

1 پاسخ

+2 امتیاز
قبل توسط (186 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

سلام

لطفا به تعریف ArithmeticException توجه کنید:

public class ArithmeticException extends RuntimeException {
{

این استثنا از نوع استثنا های زمان اجرا هست.

اینکه در تعریف متدها احتمال وقوع اون اعلام نمیشه درست هست. و در زمان کامپایل خطا نمی گیریم.

اما برای خطاهای غیر runtime باید توی اعلان متد این موضوع بیاد

موفق باشید

سوالات مشابه

+1 امتیاز
1 پاسخ 1.2هزار بازدید
+3 امتیاز
1 پاسخ 1.8هزار بازدید
0 امتیاز
1 پاسخ 482 بازدید
+1 امتیاز
1 پاسخ 696 بازدید
0 امتیاز
4 پاسخ 1.5هزار بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط ali-nb (10 امتیاز)
+1 امتیاز
1 پاسخ 890 بازدید
0 امتیاز
0 پاسخ 290 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط 1993 (242 امتیاز)
+1 امتیاز
1 پاسخ 408 بازدید
0 امتیاز
1 پاسخ 1.7هزار بازدید
...