一、概述
|
了解 |
1.自定义异常 |
|
2.异常链的概念及其作用 | |
|
理解 |
1.异常基本概念 |
|
2.异常处理 | |
|
3.抛出异常和声明抛出异常 | |
|
运用 |
在程序开发中正确的进行异常处理 |
二、异常
1、什么是异常?
不能再你控制范围内的因素所造成的问题、没有预料到的情况就叫做异常。
它有两个特点:
² 造成不能正常执行任务的因素不在我的控制范围;
² 我自己没有足够的信息进行处理,只能抛出。
1.1、所有异常必须处理!在程序里可以抛出异常,但是决不能把异常抛给最终用户,BUG在程序员手里还不是BUG,但是一旦交付,那么就是BUG。
1.2、如果是自定义异常,那么一定要加异常信息;如果是checked异常转runtime则一定要保存原有的异常,形成异常栈。
1.3、如果需要对不同的异常进行不同的处理,那么就需要自定义异常,自定义异常需要有自己的继承体系,这样当我不想单个处理时,可以对一种类型的异常采用统一的一种处理。
错误有时候是可以避免的。
1、异常处理
在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。
2.1、用if-else来判断,但是不可取

2.2、异常在java跟其他对象一样,被封装成了各种类型,且有继承关系。
异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。
Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理,还有一部分系统生成的异常在java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。

Catch语句可以有多个,用来匹配多个异常,匹配上多个中的一个后,执行catch语句块的时候仅仅执行匹配上的异常。

|
运行时异常——RuntimeException |
可以不进行处理或捕获 |
|
已检查异常——Checked Exception |
必须进行处理或捕获 |

|
Throwable |
Throwable类是Java语言中所有错误或异常的超类,只有当对象是此类(或其子类之一)的实例时,才能通过java虚拟机或者java throw语句抛出。类似地,只有此类或其子类之一才可以是catch子句中的参数类型。 |
|
Exception |
Exception类及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件,表示程序本身可以处理的异常。 |
|
Error |
是Throwable的子类,表示仅靠程序本身无法恢复的严重错误,用于指示合理的应用程序不应该试图捕获的严重问题。 |
|
RuntimeException |
是那些可能在java虚拟机正常运行期间抛出的异常的超类。该异常可以通过改进代码实现来避免。 |
|
ThreadDeath |
调用Thread类中带有零参数的stop方法时,受害线程将抛出一个ThreadDeath实例。 |
3、常见异常类型
|
ArithmeticException |
算术运算异常 |
|
ArrayIndexOutOfBoundsException |
数组越界异常 |
|
NullPointerException |
空指针异常 |
|
ClassNotFoundException | |
|
NumberFormatException |
数字转化异常 |
|
InputMismatchException |
类型不匹配异常 |
4、处理异两种处理办法)
4.1、在方法中用try...catch语句捕获并处理异常,catch语句可以有多个,用来匹配多个异常。

4.2、对于 处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。
如果异常是我们自己能处理的话,那么我们还是最好不要用这种方法,直接用try-catch捕获就行。
5、自定义异常
创建Throwable、Exception或者RuntimeException的子类即可得到一个自定义的异常类。例:


6、异常链,异常栈信息
本文详细阐述了Java中异常的基本概念、类型、处理方式及自定义异常的使用方法,并介绍了异常链的概念及其作用,旨在帮助开发者更好地理解和应用Java异常处理机制。
8万+

被折叠的 条评论
为什么被折叠?



