java异常处理体系

体系

关系 
Throwable是顶级父类,其下分为Exception(异常)和Error(错误);Exception又分RuntimeException(运行时异常)和其他异常(可检查异常);
运行时异常(RuntimeException)和可检查异常的区别

1.父类不同:运行时异常的父类为RuntimeException;而可检查异常的父类是Exception;

2.处理方式不同:可检查异常需要强制处理:通过try-catch快把和throws处理;

标准处理流程

1.try块包裹可能出现的异常代码;

2.catch用于捕获并处理异常(含运行时的异常),每个catch块处理一个异常;

3.一旦执行出现异常,流程转向相应的catch块,try块的后续代码不再执行;

4.多个catch块只有一个会执行;表明一旦发现异常就停止并捕获,

5.finally块,不管是否出现异常都会执行;

6.catch块也可以处理RuntimeException(运行时的异常);

7.catch块中声明能够捕获父类,则抛出子类异常时也可以被处理;

8.如果catch块中声明捕获的异常存在父子关系,则需要把子类放在前面,父类放在后面,否则子类无法被执行;

9.try块中,try块必须有,catch和finally二中其中一个也必须有,也可以两种都有;

10.两个catch中的异常可合并在一起(非父子关系),格式ExceptionA | ExceptionB;

11.return不论在正常流程还是异常流程中,finally都会执行;

12.System.exit(0)会关闭虚拟机,finally不会执行;

throw和throws的区别

1.throws后跟异常名;throw后跟异常实例;

2.throws表达的是该方法会抛出此异常;throw是抛出异常;

3.throws是方法签名的一部分;throw是方法体的一部分;

自定义异常

新建一个类继承相应父类异常;

例:

public class StockInsufficentException extends RuntimeException {
    public StockInsufficentException(){
    super();
    }
    public StockInsufficentException(String message,Throwable cause){
    super(message,cause);
    }
    public StockInsufficentException(String message){
    super(message);
    }
    public StockInsufficentException(Throwable cause){
    super(cause);
    }
}

   

    

        

你可能感兴趣的:(java异常处理体系)