关于Java的检查型异常的一个问题

桑汤奈伊伏 2015-10-27 11:05:50
关于检查型异常,网上的说法是 检查型异常要求在编译期捕获,如果编译器没有看到try catch 语句来捕获异常的话就会报错。那么问题来了,NoSuchMethodException是检查型异常,是不是意味着每次调用方法都要

try{
myMethod();
} catch(Exception){
}

然而事实上,并不是每次调用方法都需要用try catch包裹调用方法的代码,也就是说我理解错了,错在哪里?求指点
...全文
290 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 lonrence 的回复:
,NoSuchMethodException是检查型异常,是不是意味着每次调用方法都要 当然不是,是在产生这个异常的地方,来处理这个异常
这句没描述对,并不是指在产生异常的地方处理,而是产生了已检查异常就要处理
少主无翼 2015-10-27
  • 打赏
  • 举报
回复
checked exceptions是需要开发者显示处理的异常,但是处理的方法有两种: 1.try{}catch{}捕获异常 2.通过throw将异常向上传递 对于第一种方法的好处是由于异常在底层,所以能够及时的进行处理,但是有些时候我们并不希望或者底层无法处理某些异常,那么我们就会借助throw将异常往上层抛出,由上层进行捕获处理。 但是不管哪种方式该异常都需要被try{}catch{}捕获,只是捕获的位置并不需要是在异常抛出的地方。
桑汤奈伊伏 2015-10-27
  • 打赏
  • 举报
回复
引用 1 楼 lonrence 的回复:
你当然可以throws抛出 对于检查型异常(已检查异常)都应该是编译时异常,产生了异常如果不处理的话就编译不过,对于这样的异常可以“抓”,就是try catch 语句,也可以“抛”,声明方法时通过关键字throws,将异常传递给调用者 ,NoSuchMethodException是检查型异常,是不是意味着每次调用方法都要 当然不是,是在产生这个异常的地方,来处理这个异常
如果不使用try catch包裹,不就不符合检查型异常的定义了吗? 还是不是很明白(检查型异常需要使用try, catch和finally关键字在编译期进行处理,否则编译器会报错)
peixiaofu 2015-10-27
  • 打赏
  • 举报
回复
异常能在底层解决就在底层,不能解决的就抛出去。
  • 打赏
  • 举报
回复
你当然可以throws抛出 对于检查型异常(已检查异常)都应该是编译时异常,产生了异常如果不处理的话就编译不过,对于这样的异常可以“抓”,就是try catch 语句,也可以“抛”,声明方法时通过关键字throws,将异常传递给调用者 ,NoSuchMethodException是检查型异常,是不是意味着每次调用方法都要 当然不是,是在产生这个异常的地方,来处理这个异常

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧