今天稍微做一下笔记,也是今天自己比较迷的一个东西,叫做——自定义异常。
想写一个自定义异常案例的步骤分为三个步骤:
第一个步骤:创建一个可以抛出的类【这里以要计算一个长方形的面积来做演示,并且假定宽度是 5】
public class SquareException extends Exception {
double length;
public SquareException(double l){
length = l;
}
public String toString() {
return "输入长度"+length+"不是正数";
}
}
其中的extends Exception是为了能够让这个异常类具有可抛性
然后在里面加上一个构造方法。另外在外面定义double length是为了增大他的作用域,如果在SquareException里定义的话,那么下面的toString方法将不能收到其影响
重写toString是为了到时候直接打印出异常类即SquareException可以直接打印出它的异常信息。
第二步:搞一个方法来计算这个长方形的面积
class Square{
public static double getArea(double l)throws Exception{
if(l<0) {
throw new Exception("输入的长度为负数");
}else {
return l*5;
}
}
}
说明:这个就是对他进行一个判断,如果输入的长度是小于0的,那么就要指定这个代码去抛出一个异常,这个异常可以是自己去定义的。在这里定义为了Exception(“输入的长度为负数”);
这个意思就是说会抛出一个名字叫做Exception的异常,而且这个异常的呃信息为:输入的长度为负数
第三步:去搞一个类去对前面的getArea()方法进行一个调用和传参。
public class DefineExceptionDemo {
public static void main(String[] args) {
double area = 0;
Square sq = new Square();
try {
area = sq.getArea(5);
}catch(Exception ex){
System.out.println(ex);
}
System.out.println("长方形的面积为:"+area);
}
说明:这里加上了一个main方法去进行方法的调用
首先给area定义一个初始值,让这个变量进行初始化
double area = 0;
这个也得定义在外面,也是为了让他的作用域比较大一些
然后要先创建一个Square类的对象才可以调用这个类中的方法。这里创建的一个对象名字叫sq
接下来就开始调用了:area = sq.getArea(传递的参数);
这里的try语句里面写的是可能会发生异常的语句
那么在这里便是area = sq.getArea(传递的参数);这一句了
因为它传递的参数不一定是一个正数,如果是负数的话需要下面的Catch进行一个异常的捕获。
最后在下面可以进行一个面积的输出,如果输入的参数是符合要求的,那么他就会进行一个计算,try语句不会检测出异常,那么catch语句也就跳过了,然后会进行正常的计。
若有异常那么catch语句就会对其进行一个捕获。
捕获之后就会继续运行程序,但是这个时候参数传递的将不再是一个不符合要求的一个数字,而是一个默认值——0
将参数:0代入计算后,得到的结果自然就是0.0
Flag:(从今天开始练习算法,目标是明年的蓝桥杯,给自己加把劲叭!)