Java异常处理机制

Java的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。当程序运行出现意外情形时,系 统会自动生成一个 Exception对象来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离, 提供更好的可读性。
一.使用try catch 捕捉异常
Java处理异常机制为:抛出异常,捕捉异常,处理异常。

try catch语句
try{
业务功能代码
}catch(异常类){
异常处理代码
}
在使用try…catch捕获处理异常时需要注意:
1.不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句
2.异常捕获时,一定要先捕获小异常,再捕获大异常。否则小异常将无法被捕获
3. 避免出现庞大的try块
4. 避免使用catch(Exception e){}
5. 不要忽略异常

二.Java7 多异常捕获
从Java7开始,一个catch块可以捕获多种类型的异常。 在使用一个catch块捕获多种类型的异常时需要注意:
捕获多种类型的异常时,多种异常类型之间用竖线(|)隔开。
捕获多种类型的异常时,异常变量有隐式的final修饰,因此程序不能对异常变量重新赋值

三.Finally块
finally块一般用来关闭物理资源(数据库连接,网络连接,磁盘文件等),这些物理资源必须显式关 闭。除非在try块、catch块中调用了退出虚拟机的方法( System.exit(0); ),
否则不管在try块、 catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块一定会被执行

四.Checked异常和Runtime异常 Java的异常被分为两大类:
Checked异常和Runtime异常(运行时异常)
Runtime异常:所有的RuntimeException类及其子类的实例;
Checked异常:不是RuntimeException类及其子类的异常实例。 只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为Checked异常都是可 以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异 常,该程序在编译时就会发生错误,无法通过编译。 Checked异常体现了Java的设计哲学:没有完善错误处理的代码根本就不会被执行
Runtime异常则更加灵活,Runtime异常无须显式声明抛出,如果程序需要捕获Runtime异常,也可以 使用try…catch块来实现。

五.自定义异常类 用户自定义异常都应该继承Exception基类;如果希望自定义Runtime异常,则应该继承 RuntimeException基类。定义异常类时通常需要提供两个构造器:一个是无参数的构造器;另一个是带 个字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也就是异常对象的getMessage()方 法的返回值)

六.使用throws抛出异常 使用throws声明抛出异常的思路是,当前方法不知道如何处理这种类型的异常,该异常应该由上级调用 者处理;如果main方法也不知道如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常将 交给JVM处理。JVM对异常的处理方法是,打印异常的跟踪栈信息,并中止程序运行。 throws声明抛出异常的格式:
Throws 异常一、异常二、异常三

七.使用throw抛出异常 Java也允许程序自行抛出异常,自行抛出异常使用throw语句来完成(注意此处的throw没有后面的s) 如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用,throw语句抛出的不 是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值