java throw new assertionerror();,异常处理

异常

异常是编写应用程序时,没有代码和语法错误会出现的意外情况,为了使程序出现异常还能按照预定的方式进行处理,必须进行捕获和处理。java提供了专门的异常处理机制。

2e374d0060bf79785612feaca8e2f7f1.png

常见的异常

97fa1d0bef23590fe3c9a42b1c042716.png

如图所示,当除数为0时,出现算术错误

当遇到异常时,我们可以使用异常处理代码块。下列逐个介绍。

一、异常处理代码块try-catch-finally

1、带参数的try-catch

2、不同异常作不同处理的try-catch..catch

格式:

try{可能发生的异常代码}

catch(异常类1  参数1){异常处理代码1}

catch(异常类2  参数2){异常处理代码2}

。。。

catch(异常类n  参数n){异常处理代码n}

程序运行时只执行匹配到的第一个catch子块,不可能同时执行两个以上的子块

若没能捕获到异常只能有系统来处理,将出现未处理异常信息

子块顺序只能从小到大排序,最后一个总能捕获Excption。

3、不处理异常的try-finally

finally里的代码不管是否发生异常都是要执行

4、完整的异常处理块try-catch..catch-finally

二、throw语句和throws语句

throw语句语法形式如下

throw new   异常类构造方法名(参数列表);

throws语句用法

可选public或static等  返回类型  方法名(可选参数)  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无意义——程序结束

三、自定义异常类

public MyException(){}    //自定义异常类

throw new MyExceotion()    //抛出自定义异常

四、异常处理代码块嵌套

在循环语句中嵌入try-catch代码块,可以使异常处理代码块发生异常时不终止程序运行

如在上述例子中内部的while循环中嵌入try-catch代码块

五、错误和断言

除异常外,程序不能运行还可能发生了错误(Error)。

断言(Assert)就是宣称条件必须成立。如断言“数必须大于等于零”(条件成立)才能计算平方根。如果false,则发生断言错误(AssertionError)。

assert  条件表达式;

assert  条件表达式:字符串型断言语句

默认情况下Java虚拟机会总是关闭断言。需要开启断言在运行命令中加入选项-ea

java —ea 主类名

六、总结

学习了异常及处理。异常时运行过程中出现了意外,无法常规运行下去,可以使用try-catch-finally捕捉并处理。需要到预先编写的代码中捕捉异常,否则程序就会意外终止。

捕捉异常代码块亦可以嵌套。

异常可以使用throw语句主动精准抛出,出现异常就要及时处理,否则影响程序的运行。也可以把异常转给调用它的方法来处理,这时在方法{}前加throws接受

原文:https://www.cnblogs.com/dedegui/p/10086467.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值