Java常用API--异常

对于java中的异常,我想学习java的人都应该明白,但是对于java异常的分类,异常的继承关系,在代码中应该怎么处理,还有java异常在底层代码的实现等,就不那么清楚,本文就详细的介绍一下java中的常见异常,以及处理的方法。

一.异常的介绍及分类

在这里插入图片描述

java中的常见的异常关系,这张图可以看得比较清楚了,当然,这张图并不是包括所有的异常,但是也可以帮助我们很好的理解java异常的一些关系和处理了。
1.Throwable是java所有异常的祖先,也就是最高倍的父类
2.Throwable类下面有两个子类,一个是Error(错误)另一个就是Exception(异常)
3.Error是无法解决的错误,而异常一般是可以解决的问题。
对于所有的编译时期的错误以及系统错误都是通过Error抛出的。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。
4.Exception通常又分为运行时异常(RunTimeException)和可检查异常(checkedException);可检查异常在整个java代码程序中都是非常常用的的,因为在写代码的时候就可以处理一些可以预见的错误,在不影响程序运行的情况下,可以找到错误,比如IOException,或者一些自定义的异常。除了RuntimeException及其子类以外,都是checked exception。所以可检查异常对程序的运行并不会有根本上的影响。
而运行时异常就完全不一样了,这是在写代码的时候无法预测到的错误,比如除数为0的异常( ArithmeticException),又比如数组下标越界的异常(ArrayIndexOutOfBoundsException)等等,都是程序运行后才会检查出来的异常,并且会终止后面的程序;

二.异常的处理

代码中对异常的处理,其实指的就是对可检查异常的处理
1.try—catch

try {
	//程序代码
} catch (ParseException e) 
	{
//异常语句块
		}

Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。
如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样
这就是对于可检查的异常做出处理的情况,当然,也不抛出有时候不想处理一些异常,这时候我们就会通过throws/throw到上层再去处理

public static Date StringToDate(String time,String format) throws ParseException {
		Date d = null;
	SimpleDateFormat sdf = new SimpleDateFormat(format);
		d = sdf.parse(time);
	
		return d;
	}

就像这里的时间转换异常,并没有直接做一个处理,而是在方法上声明了一个异常去提醒调用者有异常需要注意,如果用throws声明多个异常,可以用逗号给隔开,当然throw通常是在catch块里抛出异常;

2.finally

==>要注意try块的作用域的问题,如果在try块中声明的变量,在finally里面是不能使用的

==>在try块中有可能出现异常,但是如果有些必须要执行的代码,我们可以放到finally块中,就是说,无论程序有没有异常,finally中的代码始终都会执行

==>finally总是放在catch块后边的最后位置;

try{
//程序代码1
}catch(//异常类型1 变量名){
//程序代码2
}catch(//异常类型2 变量名){
//程序代码3
}finally{
//程序代码4
}

说到最后了,在提出几个平时需要注意的一下小问题:
1:try块后catch块可以出现多个或者是0个,
2.如果是并列的多个catch块存在,如果有异常,只会有一个执行机会
3.如果有多个catch块存在,要注意继承关系,子类写前面,父类写在后面
4.要注意try块里面的变量执行的作用域的问题。
5.自定义异常的话,直接继承Exception类或者RuntimeException类就可以了,在自己的异常类中的构造方法调用父类的构造方法就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值