本文概览:介绍了异常种类、异常堆栈和自定义异常。

1 异常种类

异常层次结构为:

Snip20171227_44

  • 对于Erro类【未检查异常】,描述的是系统内部错误类和资源耗尽错误。在代码中不抛出这种类型的对象,只需要关注Exception层次结构。
  • RuntimeExcetion【未检查异常】,程序运行过程中才可能发生的异常。一般为代码的逻辑错误,例如:数组下标越界,空指针、类型转换错误等。我们在代码中自定义的异常都属于该类型。
  • IOException【已检查异常】,编译期间可以检查到的异常。显式的进行处理,比如捕获或者直接通过throws向上抛出,比如 FileNotFoundException等。

2 堆栈

1、 堆栈信息理解

打印最上面的就是 最底层抛出异常的地方。举例如

如果执行main()时f3()有异常,则此时打印堆栈信息如下:

f3()异常

f2()位置

f1()位置

main()位置

2、堆栈信息的传递

如下f3的堆栈信息只能到f2,不能延续到f1了。

Exception in thread “main” java.lang.RuntimeException: f3

    at exception.TestExcetpion.f3(TestExcetpion.java:25)

    at exception.TestExcetpion.main(TestExcetpion.java:31)

    ……..

Caused by: java.lang.RuntimeException: f2

    at exception.TestExcetpion.f2(TestExcetpion.java:17)

    at exception.TestExcetpion.f3(TestExcetpion.java:23)

    … 6 more

(2)如果修改f3

f3的堆栈信息才能向下延续到f1`

Exception in thread “main” java.lang.RuntimeException: f3

    at exception.TestExcetpion.f3(TestExcetpion.java:23)

    at exception.TestExcetpion.main(TestExcetpion.java:29)

     ……

Caused by: java.lang.RuntimeException: f2

    at exception.TestExcetpion.f2(TestExcetpion.java:15)

    at exception.TestExcetpion.f3(TestExcetpion.java:21)

    … 6 more

Caused by: java.lang.RuntimeException: f1

    at exception.TestExcetpion.f1(TestExcetpion.java:9)

    at exception.TestExcetpion.f2(TestExcetpion.java:13)

    … 7 more

3 自定义异常

1、自定义异常作用

是为了对于每一种异常都设置一个错误码。

2、自定义异常

3、自定义错误码

 

参考

https://www.cnblogs.com/aspirant/p/10790803.html

 

(全文完)

分类&标签