JAVA程序设计----异常

小结走起:

1.什么是异常?
异常是在程序执行期间中断指令的正常流程的事件。

2.什么是必检异常?什么是免检异常?
必检异常:Java语言会强制要求编码者检查处理的异常,Exception及其子类都是必检异常。
免检异常:Java语言不强制要求编写代码捕获或声明的异常,Error和RuntimeException以及它们的子类都是免检异常。

3.Error和Exception有什么区别?
Error:错误类,是由程序和外部环境引起的错误,该类错误如果发生,程序立即崩溃,Java不要求处理该类异常。
Exception:异常类,是有程序和外部环境所引起的错误,Java强制要求必须处理该类异常。

4.关键字throw的作用是?关键字throws的作用是?
throw:用于抛出异常类的实例
throws:用于声明抛出异常,表示该类不处理,让方法的调用者处理。

5.自定义异常

  • 创建自定义异常类并继承Exception基类,如果自定义Runtime异常,则继承RuntimeException基类。
  • 在方法中通过throw关键字抛出异常。
  • 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
  • 在出现异常方法的调用者中捕获并处理异常

不多说了,上代码,编写Circle类,创建InvalidRadiusException异常类,如果半径为负,则在setRadius()方法抛出异常。

//自定义异常,继承Exception类
public class InvalidRadiiusException extends Exception {
    public InvalidRadiiusException() {
        super();
    }

    public InvalidRadiiusException(String message) {
        super(message);
    }
}


public class Circle {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public Circle() {
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) throws InvalidRadiiusException {
        this.radius = radius;
        if (radius < 0){
            throw new InvalidRadiiusException("半径不能为负值!");
        }
    }
}
/**
 * 测试类
 */
public class CircleMain {

    public static void main(String[] args) {
        Circle circle = new Circle();
        try {
            circle.setRadius(-7);
        } catch (InvalidRadiiusException e) {
            e.printStackTrace();
        }
    }
}

 

你可能感兴趣的:(【JAVA】JAVA基础,java基础异常)