+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.4هزار بازدید
+3 امتیاز
1 پاسخ 1.9هزار بازدید
0 امتیاز
1 پاسخ 581 بازدید
+1 امتیاز
1 پاسخ 787 بازدید
0 امتیاز
4 پاسخ 1.8هزار بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط ali-nb (10 امتیاز)
+1 امتیاز
1 پاسخ 1.0هزار بازدید
0 امتیاز
0 پاسخ 370 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط 1993 (242 امتیاز)
+1 امتیاز
1 پاسخ 526 بازدید
0 امتیاز
1 پاسخ 1.9هزار بازدید
...