A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public interface BusinessService {
        void saveCustomer(Customer c)throws Exception;
}
public class BusinessServiceImpl implements BusinessService {//
           public void saveCustomer(Customer c) {//重写的方法可以不抛异常吗?
}
这么写编译不会报错!为什么啊?

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

6 个回复

倒序浏览
shijianws 来自手机 中级黑马 2014-10-13 06:14:24
沙发
可抛,可不抛,不能抛出比父类更多异常,但是父类不抛的子类覆写一定不能抛
回复 使用道具 举报
异常处理有两种方式,其一是向上抛出让调用者处理,其二是自行处理,也就是些try catch块进行处理。
回复 使用道具 举报
我觉得是一个类在实现接口或继承类,进行方法覆盖的时候可以抛出原方法的异常、原方法异常的子集、也可以不抛出异常,或者runtime异常及其子孙类异常(因为此类异常可以不捕获、不抛出)。编译是可以通过的,是否抛出异常取决于调用者。
回复 使用道具 举报
不抛,就得try
回复 使用道具 举报
子类实现接口方法时,如果没有异常抛出,子类也一定不能抛,子类方法如果有异常,必须进行try处理。
回复 使用道具 举报
潘杰 中级黑马 2014-10-17 23:30:16
7#
父类如果声明抛出就可以抛,如果没声明那么子类继承时只能try,不能抛
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马