异常
异常是编写应用程序时,没有代码和语法错误会出现的意外情况,为了使程序出现异常还能按照预定的方式进行处理,必须进行捕获和处理。java提供了专门的异常处理机制。
常见的异常
如图所示,当除数为0时,出现算术错误
当遇到异常时,我们可以使用异常处理代码块。下列逐个介绍。
程序运行时只执行匹配到的第一个catch子块,不可能同时执行两个以上的子块
若没能捕获到异常只能有系统来处理,将出现未处理异常信息
子块顺序只能从小到大排序,最后一个总能捕获Excption。
finally里的代码不管是否发生异常都是要执行
throw语句语法形式如下
throws语句用法
package Yichang; import java.util.Scanner; public class Ex1 { static double divide(double x,double y)throws Exception{ if(y!=0) {return x/y;} else { throw new Exception("除数为0无意义"); } } public static void main(String[] args) { try { double x,y,z; String str; Scanner input=new Scanner(System.in); while(true) { System.out.println("请输入被除数"); str =input.nextLine(); if(str.equals("")) {break;} x=Double.parseDouble(str); System.out.println("请输入除数"); str=input.nextLine(); y=Double.parseDouble(str); z=divide(x,y); System.out.printf("相除结果保留两位小数:%.2f\n",z); } input.close(); }catch(Exception e) { System.out.println("异常"+e); } finally { System.out.println("程序结束"); } } }
显示异常:除数为0无意义——程序结束
在循环语句中嵌入try-catch代码块,可以使异常处理代码块发生异常时不终止程序运行
如在上述例子中内部的while循环中嵌入try-catch代码块
除异常外,程序不能运行还可能发生了错误(Error)。
断言(Assert)就是宣称条件必须成立。如断言“数必须大于等于零”(条件成立)才能计算平方根。如果false,则发生断言错误(AssertionError)。
默认情况下Java虚拟机会总是关闭断言。需要开启断言在运行命令中加入选项-ea
学习了异常及处理。异常时运行过程中出现了意外,无法常规运行下去,可以使用try-catch-finally捕捉并处理。需要到预先编写的代码中捕捉异常,否则程序就会意外终止。
捕捉异常代码块亦可以嵌套。
异常可以使用throw语句主动精准抛出,出现异常就要及时处理,否则影响程序的运行。也可以把异常转给调用它的方法来处理,这时在方法{}前加throws接受
原文:https://www.cnblogs.com/dedegui/p/10086467.html