Java异常个人小结

首先,java异常的树状图如下

       很明显,由图就可以看出,异常都是派生自Throwable类的一个实例,Throwable类主要有两大子类,分别为Error类和Exception类,Error类描述的是java程序运行时系统的内部错误和资源耗尽错误,当错误发生的时候,除了通知用户,使程序尽可能安全终止外,我们无能为力,因此这类异常我们也不需要抛出。

      我们需要重点关注的应该是Exception类,而Exception主要分为两大子类,RuntimeException和非RuntimeException类,划分的依据主要是,由程序导致的异常属于RuntimeException异常,而曾经能够运行,由于某些原因不能运行的(比如io异常)导致的异常不属于RuntimeException异常。派生自RuntimeException类的异常主要有以下几种情况:

1.错误的类型转换(ClassCastException)

2.数组的越界访问(ArrayIndexOfBoundsException)

3.访问空指针(NullPointerException)

而非派生自RuntimeException的异常主要有以下几种情况:

1.试图在文件末尾读取数据(EOFException)

2.试图打开一个错误格式的URL(MalformedURLException)

3.试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在(ClassNotFoundException)

将派生自Error和Runtimexception类的异常称为未检查(unchecked)异常,将其他类称为检查(checked)异常;针对检查异常,是需要提供异常处理的,声明异常或者捕获异常。声明异常的时候,一定不能声明派生自Error或者RuntimeException类的异常;子类继承超类的方法后,抛出的异常的范围一定要比超类的范围小,如果超类不抛出检查型异常,子类也不能抛出。

try catch是可以不一起使用的,finally内的代码无论是否捕获到异常,都会执行,一般会将一些资源的释放放到finally里,其实比较推荐将try catch和try finally独立使用,比如

InputStream in=...;
try{
	try{
		
	}finally{
		in.close();
	}
}catch(IOException e){
	
}




参考书籍:java核心编程思想卷一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值