异常

Posted -archenemy-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常相关的知识,希望对你有一定的参考价值。

异常/Exception

异常知识点

常见格式:

try{
    //可能异常代码块
}catch(捕获的异常类型){
    //异常处理语句
}finally{
    //一定要执行的代码
    //一般用来关闭关闭流,数据库
}
//捕获异常处理

运行流程

技术图片

从上图可以发现finally语句必须执行

异常的分类如下所示

技术图片

  1. Thrawable/可抛出的异常

    1. Exception/异常

      1. 编译时异常(受检异常)/Exception下,除了RuntimeException外所有

      2. 运行时异常(非受检异常)/RuntimeException

    2. Error/错误

注意!

  1. 编译时异常,大多需要我们try-catch;

  2. 运行时异常,不需要强制try-catch,在发现错误后,修改错误(直接解决)。

常见运行异常:

名称显示语句
空指针 NullpointerException
数组下标越界 ArrayIndexOutOfBoundsException
转型错误 ClassCastException
算术异常 ArithmeticException

printStackTrace();

    e.printStackTrace();
    //打印异常的栈,该方法在Throwable中,其子类没有重写

在查看printStackTrace()打印出的语句时,从最后往前看

多个异常的处理

1. 直接捕获父类异常
catch(Exception e){}
//或者
catch(Thrawable e){}
2.多个异常依次捕获,多个catch块
try{
?
}catch(异常1){
?
}catch(异常2){
?
}catch(异常3){
?
}

注意:

  1. 多个异常依次捕获需要注意异常的顺序

    最大的异常最后,父类异常放在最后处理.

  2. 多个异常捕获,只会根据顺序进入一个catch块

3.JDK1.8后
catch(异常1 | 异常2 | 异常3){
}

注意:

在catch中的异常为同级关系,不允许存在父子关系

其他书写形式

  1. try{
    }finally{
    }
  2. try{
    }catch{
    }catch{
    }finally{
    }
  3. try{
    }catch{
    }catch{
    }

注意!以下书写方式不正确

  1. try{
    }
  2. finally{
    }

有趣的练习

1.

int x = 1;
try {
    System.out.println("A");
    return ++ x;
} catch (Exception e) {
    System.out.println("D");
} finally {
    System.out.println("B");
    ++x;
}
System.out.println("C");
return x;

上题的输出结果为

A
B
y = 2

2.

String aa = "aa";

try {
    aa = "bb";
    return aa;
} catch (Exception e) {
    e.printStackTrace();
} finally {
    aa = "cc";  
    return aa;
}

上题的输出结果为

y = cc

以上是关于异常的主要内容,如果未能解决你的问题,请参考以下文章

片段中的Android致命异常

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

springcloud报错-------关于 hystrix 的异常 FallbackDefinitionException:fallback method wasn't found(代码片段

片段中的getView()导致抛出异常,不确定原因

片段中的 EditText 上的空指针异常 [重复]