刚学异常提个问题!

蒋靖 2016-09-09 06:14:09
声明异常有什么用? 未检查异常 和已检查异常 是什么?
...全文
354 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
纵骑横飞 2016-09-10
  • 打赏
  • 举报
回复
声明异常当然是为了调用它的方法啦 异常 确实分为 检查异常 和 运行时异常 ,检查异常 直接 继承Exception,运行时异常 直接 继承RuntimeExcepiton , 但是RuntimeException是直接继承Exception的 故名思意: 检查异常 就是 必须人为干预的异常,不然编译就报错了。 运行时异常 ,就是 不是非得人为干预的 异常 ,如果问题来自机器 ,那也没办法 但有时也可以事先把运行的代码处理好,达到 人为修改的目的
codingjav 2016-09-10
  • 打赏
  • 举报
回复
引用 3 楼 wlwlwlwl015 的回复:
声明异常就是声明该方法可能出现的异常,让调用者清楚,并在调用时捕获~ 检查异常是编译前需要处理,比如IOException,SQLException 非检查异常是所有RuntimeException的派生类,不需要强制处理,比如最常见的空指针异常(NullPointer)
很详细了,具体的楼主找个博客或者书看下
dntg007 2016-09-10
  • 打赏
  • 举报
回复
举个例子,读文件如果发生异常,可能是文件不存在,也可能是没有读的权限等等。那么我们怎么区分呢,就要靠不同的异常类。catch到哪种异常就是对应的原因,我们就可以更快的确定问题点,才能更快的解决问题。
蒋靖 2016-09-10
  • 打赏
  • 举报
回复
谢谢楼上大牛们 懂了 !!! 首先有异常体系是让程序增加健壮性和代码易读性,而RuntimeException 是调用者引发的异常,所以不需要自定义这个异常因此可以在代码中直接throw出异常并需要时添加自己想要描述的信息。 而check Excetion是程序运行中可能发生的异常 为了程序能够安全的运行下去 必须在程序中throws这些可能发生的异常并try catch处理这些异常 不知理解的怎么样!
林守中 2016-09-10
  • 打赏
  • 举报
回复
引用 7 楼 qq_36078850 的回复:
那自定异常的时候 什么时候继承Exception 什么时候继承RuntimeException呢
一般而言RuntimeException是代码可控的异常,比如空指针异常,比如除零。

public void foo(@NotNull Object obj)  {
        /*
         * 当你这么写的时候,你要求了obj是非空的
         * 但是NotNull是一个Runtime的注解,不在编译的时候检测
         * 因此当有人传入一个null时便抛出了NullPointerException
         */
        System.out.println(obj.toString());
}
当遇到了RuntimeException时JVM会用默认的方法对其进行处理。 而Exception则是则是代码不可控的,比如你建立了一个网络连接开始传输文件,传输到一半突然断网了,这个情况是不可预料的,此时会抛出IOException,你应该给出一个解决方案,告诉程序怎么处理。 自己设计Exception时,遵循这样的规则会比较好。
  • 打赏
  • 举报
回复
引用 7 楼 qq_36078850 的回复:
那自定异常的时候 什么时候继承Exception 什么时候继承RuntimeException呢
看来你还是对异常不是很清楚,异常就是要处理那些因为程序有缺陷产生的问题。 很多不同的异常是为了让你对捕获不同的异常做出不同的处理。处理就是在catch语句中实现的,当然你也可以只捕获Exception, 但是会被骂的(有些测试的时候还是可以的)。 自定义异常是因为你觉得已有的异常没有能满足的你的的需求,至于用check Excetion还是RuntimeException,也是看你需求。你要是自己就处理了用哪个都一样,要是你不想处理抛出去,那么继承Excetion 的别人写代码的时候就必须处理或者接着抛,要是继承RuntimeException的别人就可以忽视。 打字好累,不知道你明白了没。。。
Swen程序员 2016-09-10
  • 打赏
  • 举报
回复

上传一张笔记图。
蒋靖 2016-09-10
  • 打赏
  • 举报
回复
那自定异常的时候 什么时候继承Exception 什么时候继承RuntimeException呢
小灯光环 2016-09-09
  • 打赏
  • 举报
回复
声明异常就是声明该方法可能出现的异常,让调用者清楚,并在调用时捕获~ 检查异常是编译前需要处理,比如IOException,SQLException 非检查异常是所有RuntimeException的派生类,不需要强制处理,比如最常见的空指针异常(NullPointer)
yannsPeng 2016-09-09
  • 打赏
  • 举报
回复
引用 1 楼 qq_36078850 的回复:
补上个问题!! 我在想这个异常体系 没有一个子类有自己的方法 为什么要有这么多子类呢
报不同的错。
蒋靖 2016-09-09
  • 打赏
  • 举报
回复
补上个问题!! 我在想这个异常体系 没有一个子类有自己的方法 为什么要有这么多子类呢

62,625

社区成员

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

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