2019-11-25

异常

异常分类

  • Error
  • Exception

继承关系:Object<-Throwable<-(Error,Exception)

异常产生条件可以查看JDK文档

异常处理

  • 隐式处理:利用JVM抛出(系统抛出)RuntimeException

    JAVA中main方法的调用是JVM
  • 显式处理
    • 方法名+throws Exception

      将Exception抛给调用方法来处理
    • try...catch/finally捕获,finally作为出口,生成则必然执行

      try和catch中带有return时,顺序执行其他表达式,再执行return后带的表达式(并且保留),然后finally最后再执行return
    i=1;output="";
    try{
        if(i==1) {throw new Exception();}
        output+="1";
    } catch(Exception e){
        output+="0";
        return output+="1";
    } finally{
        output+="3";
    }
    
    output:01
    • 抛出+捕获:程序内部catch到后则不会throws到调用方法
    • 嵌套处理:处理某些会中断程序的异常,比如除数为零。

例子:

public void method1() throws IOException
{...}
public void method2(){
    try{
        method1();
        ...
    }
    catch (IOException e){//此处捕获method1产生的异常
        ...
    }
}

自定义异常对象

public class SelfGenerateException extends Exception{
    SelfGenerateException(String str){
        super(str);//调用Exception的构造方法
    }
    static void throwOne() throws SelfGenerateException{
        ...
        if(...){
            throw new SelfGenerateException(...);
        }
    }
}

你可能感兴趣的:(2019-11-25)