需求:
代码:
/*
练习:处理求圆和长方形面积中的异常
*/
class NoValueException extends RuntimeException {
NoValueException(String msg) {
super(msg);
}
}
interface Shape {
void getArea();
}
class Rec implements Shape {
private int len,wid;
Rec(int len,int wid) { //throws NoValueException 自定义异常继承的是RuntimeException
//下面也不用进行异常处理了(不用try catch了
if (len<=0 || wid<=0)
throw new NoValueException("出现非法值");
this.len = len;
this.wid = wid;
}
public void getArea() {
System.out.println(len*wid);
}
}
class Circle implements Shape {
private int radius;
public static final double PI = 3.14; //全局常量
Circle(int radius) {
if (radius<=0)
throw new NoValueException("非法");
this.radius = radius;
}
public void getArea() {
System.out.println(radius*radius*PI);
}
}
class ExceptionText1 {
public static void main(String[] args) {
Rec r = new Rec(3,4);
r.getArea();
Circle c = new Circle(38);
c.getArea();
System.out.println("over");
}
}
总结:
在实际中,异常处理要单独封装成一个类,这个类的名字便于查看具体是什么异常。对于非法值的异常,可以自定义一个类直接继承RuntimeException异常类,此时不用再抛出异常和处理异常了,出现问题后虚拟机直接停止工作,便于直接改掉非法值,才继续工作。