本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、Java中异常处理——try...catch
为了解决由于发生了异常,程序立即终止,无法继续向下执行的问题,Java中提供了一种对异常进行处理的方式——异常捕获。
异常捕获语法格式:
try{
//程序代码块
}catch(ExceptionType(Exception类及子类) e){
//对ExceptionType的处理
}
关于try...catch:
- 在try代码块中编写可能发生异常的Java语句,catch代码块中编写针对异常进行处理的代码。
- catch代码块需要一个参数指明它所能够接收的异常类型,这个参数的类型必须是Exception类或其子类。
- 当try代码块中的程序发生了异常,系统会将这个异常的信息封装成一个异常对象,并将这个对象传递给catch代码块。
案例:
//异常 try...catch和finally
public class Abnormal02 {
public static void main(String[] args) {
//下面的代码定义了一个 try...catch语句用于捕获异常
try{
int result=divide(4,0); //调用方法
System.out.println(result);
}catch (Exception e){ //对异常进行处理
System.out.println("捕获异常信息为:"+e.getMessage());
}
}
//下面的方法实现了两个整数相除
public static int divide(int x,int y){
int result = x/y;
//定义一个变量 result记录两个数相除的结果
return result; //将结果返回
}
}
注意:在try代码块中,发生异常语句后面的代码是不会执行的。
二、Java异常处理——finally
希望无论程序是否发生异常都要执行,可以在try...catch语句后,加一个finally代码块。
案例:
//异常 finally(总结)
public class Abnormal03 {
public static void main(String[] args) {
//下面的代码定义了一个 try...catch语句用于捕获异常
try{
int result=divide(4,0); //调用方法
System.out.println(result);
}catch (Exception e){ //对异常进行处理
System.out.println("捕获异常信息为:"+e.getMessage());
return; //用于结束当前语句
}finally {
System.out.println("进入 finally代码块");
}
System.out.println("程序将继续向下执行……");
}
//下面的方法实现了两个整数相除
public static int divide(int x,int y){
int result = x/y;
//定义一个变量 result记录两个数相除的结果
return result; //将结果返回
}
}
在程序设计中,经常会在try...catch后使用finally代码块来完成必须做的事情,例如释放系统资源。
注意: finally中的代码块有一种情况下是不会执行的,那就是在try...catch中执行了System.exit(0)语句。System.exit(0)表示退出当前的Java虚拟机,Java虚拟机停止了,任何代码都不执行。