java异常抛出,Java中抛出异常的方法

I am trying to understand Object Casting and Method Overriding.

I have a piece of code:

public class ExceptionClass{

void m() throws SQLException{}

}

class A extends ExceptionClass{

void m() throws Exception{}

}

This gives an error "Exception Exception is not compatible with throws clause in ExceptionClass.m()".

The same if I write as :

public class ExceptionClass{

void m() throws SQLException{}

}

class A extends ExceptionClass{

void m() throws RuntimeException{}

}

This doesnt give any error and method is also overridden properly.

After some analysis I thought that may be, since SQLException extends from Exception class therefore we cant replace "SQLException" with "Exception" in subclass (we are changing the signature of the overridden method).

But then I did this:

public class ExceptionClass{

void m() throws NullPointerException{}

}

class A extends ExceptionClass{

void m() throws RuntimeException{}

}

But there's no error here..! I thought it should give the same error because of the reason I mentioned above.

I am not sure why it is behaving in this way.

Also what are the rules to follow when we override methods, which throw Exceptions in method signature.

解决方案

NullPointerException and RuntimeException are both unchecked exceptions.

They don't need to be listed in the throws clause.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值