JAVA笔记十六

十六、异常Exception

1.概念

异常:非正常情况,包括空的引用、数组下标越界、内存溢出等

Java提供了异常对象描述这类异常情况。

Java提供了异常机制来进行处理,通过异常机制来处理程序运行期间出现的错误可以更好地提升程序的健壮性

2.异常处理基本流程

(1)try{

}catch(......){

}

异常处理过程:

·当执行过程中遇到异常时,系统会抛出异常(对象)

·catch()块捕获异常并处理

·没有被捕获的异常最终都将由默认处理程序进行处理

注意:

·由try保护的语句必须使用{}括起来,catch也不能省略{}

·try、catch不能单独使用

·try块发生异常之后直接进入catch块,执行完catch块后也不会返回到try块

(2)try{

}catch(......){

}catch(......){

}

注意:

·try及其catch语句构成了一个单元catch子句的作用域被限制在由之前try语句指定的那些语句

·执行了一条catch语句之后,会忽略其他catch语句,并继续执行try/catch块后面的代码

·当使用多条catch语句时,要重点记住异常子类必需位于它的所有超类之前

(3)try{

}finally{

}

注意:

·不管是否有异常抛出,都会执行finally块

·最多只能有一个finally块

·每个try语句至少需要有一个catch子句或一个finally子句

3.嵌套的try语句

一个try语句可以位于另一个try语句中

4.异常类型

(1)异常继承体系

(2)异常分类

·运行时异常(unchecked异常):所有RuntimeException类及其子类的实例

不要求必须进行异常捕获处理或抛出声明

·非运行时异常(checked异常)(编译异常):运行时异常之外的异常

必须显式处理异常

处理方式:

·使用try...catch块来捕获异常,然后在对应的块来修复异常

·定义方法时抛出异常

(3)常用异常

java.lang包中定义的运行时异常

异 常

含 义

ArithmeticException

算术错误,例如除零

ArrayIndexOutOfBoundsException

数组索引越界

ArrayStoreException

使用不兼容的类型为数组元素赋值

ClassCastException

无效的转换

EnumConstantNotPresentException

试图使用未定义的枚举值

IllegalArgumentException

使用非法实参调用方法

IllegalMonitorStateException

非法的监视操作,例如等待未锁定的线程

IllegalStateException

环境或应用程序处于不正确的状态

IllegalThreadStateException

请求的操作与当前线程状态不兼容

IndexOutOfBoundsException

某些类型的索引越界

NegativeArraySizeException

使用负数长度创建数组

NullPointerException

非法使用空引用

NumberFromatException

字符串到数字格式的无效转换

SecurityException

试图违反安全性

StringIndexOutOfBounds

试图在字符串边界之外进行索引

TypeNotPresentExcepton

未找到类型

UnsupportedOpetationException

遇到一个不支持的操作

java.lang包中定义的非运行时异常

异 常

含 义

ClassNotFoundException

未找到类

CloneNotSupportedException

试图复制没有实现Cloneable接口的对象

IllegalAccessException

对类的访问被拒绝

InstantiationException

试图为抽象类或接口创建对象

InterruptedException

一个线程被另一个线程中断

NoSuchFieldException

请求的字段不存在

NoSuchMethodException

请求的方法不存在

ReflectiveOperationException

与反射相关的异常的子类(该异常是由JDK 7新增的)

常用的非运行时异常

异 常

含 义

IOException

输入输出异常

FileNotFoundException

文件不存在异常

SQLException

SQL异常

5.throw

使用throw语句显式地抛出一个异常在throw语句之后的执行流会立即停止,所有后续语句都不会执行然后检查最近的try块,查看是否存在和异常类型相匹配的catch语句

6.throws

如果方法可能引发一个Checked异常,则必须在方法声明中提供throws子句列出了方法可能抛出的异常类型

throw与throws的区别:

·throw抛出异常对象,应用在代码块内

·throws声明可能抛出的异常类型,在定义方法后面

·如果方法内使用throw抛出Checked异常对象,又没有进行try catch处理,则该方法定义同时需要使用throws指明抛出异常类型

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值