Java(17)异常
一.异常
1.1程序执行过程中出现的影响程序运行正常运行的现象.
1.2异常语法
try{
//代码块
}catch(异常类型 e){
}catch(异常类型 e){
}...{
}finally{
}
注意:try:表示可能出现异常的代码块
catch:抓取异常,并进行处理
可能抓取多个异常,异常范围要从小到大抓取
并且只会执行第一个匹配的异常类型
finally:最后的,不管是否出现异常,finally中的代码一直会执行,除非虚拟机(syatem.exit(1)这个情况外)
使用if结构:
1 public class Text1 { 2 /* 3 * 1.什么是异常? 定义:异常是程序在执行时发生的事件,它会打断指令的正常流程。 4 */ 5 public static void main(String[] args){ 6 Scanner input = new Scanner(System.in); 7 System.out.println("请输入被除数"); 8 int num = 0; 9 if(input.hasNextInt()){ 10 num = input.nextInt(); 11 }else{ 12 System.out.println("输入的被除数不是整数,程序退出"); 13 System.exit(1); 14 } 15 System.out.println("请输入除数"); 16 int num1 = 0; 17 if(input.hasNextInt()){ 18 num1 = input.nextInt(); 19 if(0==num1){ 20 System.out.println("输入的除数是0,程序退出"); 21 System.exit(1); 22 } 23 }else{ 24 System.out.println("输入的除数不是整数,程序退出"); 25 System.exit(1); 26 } 27 System.out.println(String.format("%d/%d =%d",num,num1,num/num1)); 28 System.out.println("感谢使用本程序"); 29 30 } 31 }
运行结果为:
使用try-catch- finally:
1 //使用 try catch finally处理异常 2 public class Test2 { 3 public static void main(String[] args) { 4 Scanner input = new Scanner(System.in); 5 System.out.println("请输入被除数"); 6 try { 7 int num = input.nextInt(); 8 System.out.println("请输入除数"); 9 int num1 = input.nextInt(); 10 System.out.println(String.format("%d/%d =%d", num, num1, num / num1)); 11 } catch (Exception e) { 12 System.err.println("出现错误,被除数和除数必须是整数," + "除数不能为零"); 13 System.out.println(e.getMessage()); 14 //err是运行期异常和错误反馈的输出流的方向,但它只能在屏幕上打印,即使你重定向也一样 15 //重定向就是通过各种方法将各种网络请求重新定个方向转到其他位置 16 //用err打印出的字符串·,再用eclipse的input会显示呈红色; 17 } finally { 18 System.out.println("感谢使用本程序!"); 19 } 20 } 21 } 22 /* 23 * 如果try块中所有语句正常执行完毕,那么finally块就会执行 24 * 如果try语句块在执行过程中碰到异常,无论这种异常能否被catch块捕捉到,都将执行finally块中的代码 25 * 注意:即使在try块和catch块中存在return语句,finally块中语句也会执行 26 * 发生异常时的执行顺序:执行try块或catch中return之前的语句,执行finally块中的语句, 执行try或catch中的return语句退出 27 * finally 块中语句不被执行的唯一情况:在异常处理代码中执行System.exit(1),将退出java虚拟机 28 */
运行结果为:
1.3 throws 声明异常
a.就是当前方法,不能解决这个异常的时候,必须把这个异常交给上一个调用的去处理
b.语法
访问修饰符 返回值类型 方法名(参数列表)[throws 异常]{}
二.java异常体系
Throwable
|--error:(出现不能通过程序处理的错误)
|--Exception:可以同程序抓取或者抛出的错误
|--检查异常(非运行时异常):编译阶段会出现的异常
SQlExceqtion,
IOException,
ClassNotFoundException
|-- 非检查异常(运行阶段异常RunTimeException):运行简单会出现的异常
NullPointerException,
ArrayIndexOutOfBoundsException,
ClassCastException
注意:cgecked异常,是必需处理的
运行时异常,可以不处理