社区
Java SE
帖子详情
java 的异常有几种类型 ??
jaksuse
2008-07-23 11:56:20
如题 , 今天去面试 ,面试官问我这个问题 。 当时没答上, 哪个朋友告诉一下答案 ,哈哈
...全文
496
11
打赏
收藏
java 的异常有几种类型 ??
如题 , 今天去面试 ,面试官问我这个问题 。 当时没答上, 哪个朋友告诉一下答案 ,哈哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jaksuse
2008-07-24
打赏
举报
回复
谢谢朋友们的回答 。 thank you !
n7kki1986
2008-07-23
打赏
举报
回复
按基类到子类从上到下的顺序是
Throwable
| |
Error Exception (这2个被检查的异常)
|
RuntimeException(未被检查的异常)
For_suzhen
2008-07-23
打赏
举报
回复
学习
墨水鱼
2008-07-23
打赏
举报
回复
2楼的是正确的
冰思雨
2008-07-23
打赏
举报
回复
未检查异常和已检查异常
所有派生自Error和RuntimeException的类,都是未检查异常.其余的是已检查异常.
未检查异常意思就是说,编译器不会检查程序是否抛出异常,换句话说,程序员可以不用使用try-catch来捕获异常,比如NullPointerException
xah1985
2008-07-23
打赏
举报
回复
学习了。。。。
zhouzhijun
2008-07-23
打赏
举报
回复
[Quote=引用 2 楼 preferme 的回复:]
未检查异常和已检查异常
所有派生自Error和RuntimeException的类,都是未检查异常.其余的是已检查异常.
未检查异常意思就是说,编译器不会检查程序是否抛出异常,换句话说,程序员可以不用使用try-catch来捕获异常,比如NullPointerException
[/Quote]
已经说的很好了,
补充一下未检查异常和已检查异常的最大区别在于:
如果发生了未检查异常,就说明是程序员的问题了,也就是说一个完美的程序员编出来的程序是不可能抛出未检查异常的,抛出的话,说明程序编的
还不够健壮。
比如NullPointerException这个未检查异常,如果抛出的话,必然是没有先判断变量是否等于null
if(user!=null){
user.save();
}
而已检查异常如IOException,程序员如果想要一辈子不让程序抛出它是不可能的,因为没法控制网络的链接一直保持有效,你可以把网线做的很坚固,但是人家电信那出故障了,一样还是要抛出这个异常。
所以已检查异常是不可控的,所以在程序中一定要对他try/catch或throws到上层调用方法
而未检查异常是可控的,只要你有足够的经验,可以让他一辈子不被抛出
DeepNightTwo
2008-07-23
打赏
举报
回复
当然如果是应付面试,你可以说java就两种异常,一种是编译期异常,需要coder自己编程处理:catch住或者throw出去,一种是运行期异常,不需要编程处理,但是为了程序的容错性,也可以catch住处理或者throw。
DeepNightTwo
2008-07-23
打赏
举报
回复
Throwable接口是JVM用来判断是不是可以throw。
Error是Throwable的一个子类,这个类以及其子类不需要java程序强制catch,当然你也可以catch,或者说有时候最好catch。Error的意思是java虚拟机内部出现了问题,而不是某个code block有问题,比如说,OutOfMemoryError是没有内存了,LinkageError是class文件不合法之类的。这些东西开始学java可以先不必理会。等学到一定level再慢慢理解更好。
Exception就是我们平时编程的时候打交道的异常的父类。它实现了Throwable。Exception分两种,一种是编译期异常,一种是运行期异常(RuntimeException的子类),编译期异常就是客观上可以通过java编译期可以检测出的并且需要coder处理的异常,比如IOException,只要有IO操作(比如读取文件或者操作Socket)就有可能会有IOException,所以java把IOException定为编译期异常。编译期异常要求coder必须catch或者throw。运行期异常就是在编译期间无法确定的异常,所以不需要coder处理。比如NumberFormatException,NullPointException等等,只有在真正程序运行起来才知道会不会有错误,编译期是不可能知道的,有些运行期异常最好也catch,比如NumberFormatException,catch了以后可以复个default value,比如0 或者 -1,否则程序可能就走不下去了。
至于java为什么把一个异常定为运行期异常或者编译期异常,我想还是Sun的工程师根据自己经验或者惯例来的吧。比如NumberFormatException,这个也完全可以是编译期异常,只要有字符转数字的地方都有可能发生此异常。但如果这样,我们的code里面可能就充斥着很多很多的try-cacth block了,如果NullPointException定为编译期异常,那整个java就没有一行code不在try-catch block里面了 :)。
sagezk
2008-07-23
打赏
举报
回复
2楼正解
java
的
异常
有哪
几种
?有什么区别?
java
异常
分为两种:一般
异常
和运行时
异常
。 一般
异常
:这些
异常
是在定义方法时声明抛出的。这些
异常
需要try catch 处理或者throw抛出。如果不处理程序编译将失败。比如:IOException ,FileNotFoundException 。 ...
【
java
异常
有哪些分类?】
java
异常
有哪些分类? 下面是
java
异常
类的组织结构,红色区域的
异常
类表示是程序需要显示捕捉或者抛出的。 Throwable 是
java
异常
的顶级类,所有
异常
都继承于这个类。 Error,Exception是
异常
类的两个大分类。 Error ...
java
异常
有哪
几种
常见
类型
_
Java
编程中 常见的
异常
有哪
几种
??
java
.lang.nullpointerexception这个
异常
大家肯定都经常遇到,
异常
的解释是"程序遇上了空指针",简e68a843231313335323631343130323136353331333238656638单地说就是调用了未经初始化的对象或者是不存在的对象,这...
Java
基本数据
类型
有哪些?他们分别占几个字节?为什么?
我们都知道
Java
中有八种基本数据
类型
,其中四种整型,二种浮点型,一种字符型,一种布尔型,这些基本数据
类型
占多大空间如下图所示,那么他们为什么占这么大空间呢? 他们为什么占这么多空间呢? 首先看一下官方...
【
Java
基础系列】
Java
中的
异常
有哪几类?
对 Checked
异常
处理方法有两种: 1、当前方法知道如何处理该
异常
,则用 try…catch 块来处理。 2、当前方法不知道如何处理,则在定义该方法时声明抛出该
异常
。 import
java
.io.IOException; public class ...
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章