异常
来源:互联网 发布:淘宝卖家被骗案例 编辑:程序博客网 时间:2024/05/17 04:45
一、概述
了解
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、异常链,异常栈信息