|
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