异常

来源:互联网 发布:淘宝卖家被骗案例 编辑:程序博客网 时间: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个关键字trycatchthrowthrowsfinally进行管理。基本过程是用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、自定义异常

创建ThrowableException或者RuntimeException的子类即可得到一个自定义的异常类。例:



6、异常链,异常栈信息




原创粉丝点击