目录
- 什么是异常
- 通过if-else处理异常
- 用if-else堵漏洞的缺点
- try-catch
- 例
- 第一种处理
- 第二种处理
- 第三种处理
- 第四种处理
- try-catch-finally
- 例
- System.exit(0);//终止当前的虚拟机执行
什么是异常
Exception
:在程序的运行过程中,发生了不正常的现象,阻止了程序的运行,我们称之为发生异常。
import java.util.Scanner;public class Except01 {//这是一个main方法,是程序的入口:public static void main(String[] args) {//实现一个功能:键盘输入两个数,求商:Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");int num1 = sc.nextInt();System.out.println("请输入第二个数:");int num2 = sc.nextInt();System.out.println("商:"+num1/num2);}}
通过if-else处理异常
import java.util.Scanner;public class Except02 {//这是一个main方法,是程序的入口:public static void main(String[] args) {//实现一个功能:键盘输入两个数,求商:Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");if(sc.hasNextInt()){int num1 = sc.nextInt();System.out.println("请输入第二个数:");if(sc.hasNextInt()){int num2 = sc.nextInt();if(num2 == 0){System.out.println("对不起,除数不能为0");}else{System.out.println("商:"+num1/num2);}}else{System.out.println("对不起,你输入的不是int类型的数据!");}}else{System.out.println("对不起,你输入的不是int类型的数据!");}}
}
用if-else堵漏洞的缺点
- 代码臃肿,业务代码和处理异常的代码混在一起。
- 可读性差
- 程序员需要花费大量的经历来维护这个漏洞
- 程序员很难堵住所有的漏洞。
try-catch
在Java中,try-catch语句用于处理异常。当程序中可能出现异常时,可以使用try-catch语句来捕获并处理这些异常,以避免程序崩溃或出现不可预料的行为。
try-catch语句的基本语法如下:
try {// 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {// 处理异常类型为ExceptionType1的代码块
} catch (ExceptionType2 e2) {// 处理异常类型为ExceptionType2的代码块
}
在try代码块中,编写可能会抛出异常的代码。如果在try代码块中发生异常,控制流将转到相应的catch代码块。每个catch代码块处理一种特定的异常类型。如果没有找到匹配的catch代码块,则程序将终止。
例
import java.util.Scanner;public class Except03 {public static void main(String[] args) {//实现一个功能:键盘输入两个数,求商:try{Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");int num1 = sc.nextInt();System.out.println("请输入第二个数:");int num2 = sc.nextInt();System.out.println("商:"+num1/num2);}catch(Exception ex){//第一种处理:什么都不写,什么都不做//第二种处理:输出自定义异常信息//System.out.println("对不起,你的代码有问题!");//第三种处理:打印异常信息:/*(1)调用toString方法,显示异常的类名(全限定路径)*//*System.out.println(ex);System.out.println(ex.toString());*//*(2)显示异常描述信息对应的字符串,如果没有就显示nullSystem.out.println(ex.getMessage());*//*(3)显示异常的堆栈信息:将异常信息捕获以后,在控制台将异常的效果给我们展示出来,方便我们查看异常*//* ex.printStackTrace();*///第四种处理:抛出异常:throw ex;}System.out.println("----谢谢你使用计算器");}
}
第一种处理
第二种处理
第三种处理
第四种处理
try-catch-finally
除了try-catch语句之外,还可以使用finally代码块来确保无论是否发生异常,都会执行某些操作。finally代码块的语法如下:
try {// 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {// 处理异常类型为ExceptionType1的代码块
} catch (ExceptionType2 e2) {// 处理异常类型为ExceptionType2的代码块
} finally {// 无论是否发生异常都会执行的代码块
}
例
import java.util.Scanner;public class Except04 {public static void main(String[] args) {//实现一个功能:键盘录入两个数,求商:try{Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数:");int num1 = sc.nextInt();System.out.println("请录入第二个数:");int num2 = sc.nextInt();System.out.println("商:"+num1/num2);System.exit(0);//终止当前的虚拟机执行return;}catch(ArithmeticException ex){throw ex;}finally {System.out.println("----谢谢你使用计算器");}}
}
System.exit(0);//终止当前的虚拟机执行
它可以让finally中代码不执行