一、概念
在计算机编程中,异常(Exception)是指在程序执行过程中发生的一些意外情况或错误,它打断了程序正常的执行流程。在Java中,异常通常被表示为对象,这些对象是派生自Throwable
类的实例。
二、异常处理的目的
当程序发生异常时,能够保证程序继续运行
三、异常的分类
根据问题的级别分为:
Error:错误,蓝屏、硬件
Exception:异常,可以通过调整程序进行解决
运行时异常:运行的过程中可能发生也可能不发生。
编译时异常:如果不处理,程序无法运行。
四、java处理异常
1. 捕获异常(try-catch):
try :负责监视代码如果发生异常,直接进入catch
catch:负责捕获发生的异常信息
finally:不管是否发生异常,都要执行,用作释放资源,在return之前执行;仅当try或catch中执行代码 System.exit(0),finally不执行
try {
// 可能会抛出异常的代码
} catch (ExceptionType1 e1) {
// 处理ExceptionType1类型的异常
} catch (ExceptionType2 e2) {
// 处理ExceptionType2类型的异常
} finally {
// 可选的finally块,无论是否抛出异常都会执行
}
2. 抛出异常(throw)
throw:抛出,可以根据自己的需要,产生一些异常,建议抛出运行时异常,只能跑出一个异常,不能抛出多个
throw new SomeException("异常消息");
throws:声明抛出的异常,用在方法的签名上,可以声明多个
public void someMethod() throws SomeException {
// 可能会抛出SomeException的代码
}
注意:
1. 如果需要强调某个方法需要注意问题,这时候需要使用throws 声明异常。
public static Connection getConnection() throws SQLException{
Connection conn=DriverManager.getConnection(user,pwd,url);
return conn;
}
2. 在操作数据库过程中,处理完异常后,要把异常信息进行通过throw抛出。
public int executeUpdate(String sql){
try{
conn=getConnection();
} catch(Exception ex) {
throw new RuntimeException(ex);
System.out.println(ex.getMessage());
} finally {
close();//关闭数据库链接
}
}
五、java处理异常的三种情况
没有发生异常:程序正常运行
发生异常,正常处理了,程序继续运行
发生异常,catch不能捕获,程序终止
注意:为了防止发生异常 catch不能捕获,建议使用Exception进行处理。
六、多重catch
一个try后面可以跟多个catch,每一个catch处理不同的异常,catch中异常的类型由小到大,最后是 Exception,只能执行其中一个catch
public void test(){
try{
} catch(NullPointerException ex1) {
……
} catch(IndexOutofBoundsExcetpion ex2) {
……
} catch(RuntimeException ex3) {
……
} catch(Exception ex4) {
……
}
}
建议不用多重catch,使用一个Exception即可
public void test(){
try{
……
} catch(Exception ex) {
……
}
}