|
1 | 1 | # Table of Contents
|
2 | 2 |
|
| 3 | +* [目录](#目录) |
3 | 4 | * [为什么要使用异常](#为什么要使用异常)
|
4 | 5 | * [异常基本定义](#异常基本定义)
|
5 | 6 | * [异常体系](#异常体系)
|
|
20 | 21 | * [个人公众号:黄小斜](#个人公众号:黄小斜)
|
21 | 22 |
|
22 | 23 |
|
| 24 | +# 目录 |
| 25 | + |
| 26 | + * [为什么要使用异常](#为什么要使用异常) |
| 27 | + * [异常基本定义](#异常基本定义) |
| 28 | + * [异常体系](#异常体系) |
| 29 | + * [初识异常](#初识异常) |
| 30 | + * [异常和错误](#异常和错误) |
| 31 | + * [异常的处理方式](#异常的处理方式) |
| 32 | + * ["不负责任"的throws](#不负责任的throws) |
| 33 | + * [纠结的finally](#纠结的finally) |
| 34 | + * [throw : JRE也使用的关键字](#throw--jre也使用的关键字) |
| 35 | + * [异常调用链](#异常调用链) |
| 36 | + * [自定义异常](#自定义异常) |
| 37 | + * [异常的注意事项](#异常的注意事项) |
| 38 | + * [当finally遇上return](#当finally遇上return) |
| 39 | + * [JAVA异常常见面试题](#java异常常见面试题) |
| 40 | + * [参考文章](#参考文章) |
| 41 | + * [微信公众号](#微信公众号) |
| 42 | + * [Java技术江湖](#java技术江湖) |
| 43 | + * [个人公众号:黄小斜](#个人公众号:黄小斜) |
| 44 | + |
23 | 45 | ---
|
24 |
| -title: 夯实Java基础系列10:深入理解Java中的异常体系 |
25 |
| -date: 2019-9-10 15:56:26 # 文章生成时间,一般不改 |
26 |
| -categories: |
27 |
| - - Java技术江湖 |
28 |
| - - Java基础 |
29 |
| -tags: |
| 46 | + |
30 | 47 | - Java异常
|
31 | 48 | ---
|
32 | 49 |
|
@@ -136,8 +153,9 @@ Throwable又派生出Error类和Exception类。
|
136 | 153 | // at com.javase.异常.异常.devide(异常.java:24)
|
137 | 154 | // at com.javase.异常.异常.CMDCalculate(异常.java:19)
|
138 | 155 | // at com.javase.异常.异常.main(异常.java:12)
|
139 |
| - |
140 |
| - |
| 156 | + |
| 157 | + |
| 158 | + |
141 | 159 | // ----欢迎使用命令行除法计算器----
|
142 | 160 | // r
|
143 | 161 | // Exception in thread "main" java.util.InputMismatchException
|
@@ -234,7 +252,7 @@ Throwable又派生出Error类和Exception类。
|
234 | 252 | //close方法会抛出IOException
|
235 | 253 | fileIn.close();
|
236 | 254 | }
|
237 |
| - |
| 255 | + |
238 | 256 | 一般情况下的处理方式 try catch finally
|
239 | 257 |
|
240 | 258 | public class 异常处理方式 {
|
@@ -362,7 +380,7 @@ finally块不管异常是否发生,只要对应的try执行了,则它一定
|
362 | 380 | }
|
363 | 381 | }
|
364 | 382 | }
|
365 |
| - |
| 383 | + |
366 | 384 | ## throw : JRE也使用的关键字
|
367 | 385 |
|
368 | 386 | throw exceptionObject
|
@@ -475,7 +493,7 @@ throw 语句必须写在函数中,执行throw 语句的地方就是一个异
|
475 | 493 | // at com.javase.异常.异常链.A(异常链.java:16)
|
476 | 494 | // ... 31 more
|
477 | 495 | }
|
478 |
| - |
| 496 | + |
479 | 497 | ## 自定义异常
|
480 | 498 |
|
481 | 499 | 如果要自定义异常类,则扩展Exception类即可,因此这样的自定义异常都属于检查异常(checked exception)。如果要自定义非检查异常,则扩展自RuntimeException。
|
@@ -512,7 +530,7 @@ throw 语句必须写在函数中,执行throw 语句的地方就是一个异
|
512 | 530 | super(cause);
|
513 | 531 | }
|
514 | 532 | }
|
515 |
| - |
| 533 | + |
516 | 534 | ## 异常的注意事项
|
517 | 535 |
|
518 | 536 | 异常的注意事项
|
@@ -675,7 +693,7 @@ finally中的return 会覆盖 try 或者catch中的返回值。
|
675 | 693 | return 2;
|
676 | 694 | }
|
677 | 695 | }
|
678 |
| - |
| 696 | + |
679 | 697 | finally中的return会抑制(消灭)前面try或者catch块中的异常
|
680 | 698 |
|
681 | 699 | class TestException
|
@@ -771,7 +789,7 @@ finally中的异常会覆盖(消灭)前面try或者catch中的异常
|
771 | 789 |
|
772 | 790 | }
|
773 | 791 | }
|
774 |
| - |
| 792 | + |
775 | 793 | 上面的3个例子都异于常人的编码思维,因此我建议:
|
776 | 794 |
|
777 | 795 | > 不要在fianlly中使用return。
|
@@ -884,3 +902,4 @@ https://blog.csdn.net/michaelgo/article/details/82790253
|
884 | 902 | **程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
|
885 | 903 |
|
886 | 904 | 
|
| 905 | + |
0 commit comments