Java异常处理

第一章、异常

1.1异常概念

  • 异常:指的是程序在执行过程中,出现非正常的情况,最终会导致JVM的非正常停止。

  • 在java等面线对象的编程语言中,异常本身就是一个类,产生的异常就是创建异常对象并抛出异常对象。

  • Java处理异常的方式是中断处理。

1.2、异常体系

(1)异常其实是帮助程序员找到程序中的问题。

  • 根类:Java.lang.Throwable
  • 子类:Java.lang.Error与Java.lang.Exception

(2)Throwable体系

Error:严重错误,无法通过处理的错误。

  • 代码产生必须修改的错误(ps:定义过大的数组产生内存溢出异常)

Exception:表示异常,异常产生后程序员可以通过代码方式纠正。

  • 编译期异常:编写过程中出现异常
  • 运行期异常(RunTimeException及其子类):编译通过,执行过程出现异常。

1.3、异常过程解析

在这里插入图片描述

第二章、异常处理

2.1、抛出异常throw

(1)作用:使用throw关键字在指定的方法中抛出指定的异常。

  • 异常抛出不处理:throw关键字后创建的是运行期异常,不处理时默认交给JVM,JVM会打印到控制台并中断程序。
  • 异常抛出处理:throw关键字后创建的是编译期异常,要么 try…catch…,要么throw抛出交由其他部分程序处理。

(2)声明格式

throw new xxxException(“异常产生原因”);

(3)注意事项

  • throw必须使用在方法体内
  • throw后必须是Exception或者Exception的子类

2.2、声明异常throws

(1)作用:抛出异常,在方法层面上声明throw抛出的异常并交由调用者处理。

(2)声明格式

修饰符 返回值 方法名(参数列表) throws 异常原因{
    throw new xxxExceptionthrow new bbbException}

(3)注意事项

  • 编译期异常因为必须要处理,抛出后可以不解决,但需要在方法声明时声明异常,交给调用者处理。
  • 方法内存在多个抛出异常时,方法声明时需要全部声明;如异常存在继承关系,则只需要写其父类即可。
  • 如果调用了声明异常的方法,则调用者必须去处理该异常。

2.3、捕获异常try…catch

(1)作用:自己处理异常

(2)声明格式

//对象变量名接受出现的相应类型异常对象
try{
	可能出现异常的代码;
}catch(异常类型1 对象变量名1){
	异常处理代码;
}
...
catch(异常类型2 对象变量名2){
异常处理代码;
}

(3)注意事项:

  • try中可能出现多个异常,就可以使用多个catch处理异常。
  • 如果try未出现异常,程序忽略catch继续执行后续代码。
  • 如果try出现异常,程序执行相应异常catch块内的代码后,继续执行程序。

2.4、Throwable异常处理方法

(1)方法

String getMessage();//获取异常的最简略信息
String toString();//获取异常的详细字符串,比getMessage方法多了异常原因
void printStackTrace();//获取异常的最详细信息(JVM打印异常对象的默认方法)

2.5、finally代码块

(1)作用:改代码块内代码一定会执行

(2)声明格式

try{
	可能出现异常的代码;
}catch(异常类型1 对象变量名1){
	异常处理代码;
}
...
catch(异常类型2 对象变量名2){
异常处理代码;
}finally{
 必须执行代码块;   
}

(3)注意事项

  • finally必须与try一起使用。
  • 多用于资源回收。

2.6、异常注意事项

(1)多异常捕获处理

  • 多个异常分别处理

    分别try…catch…语句处理可能出现异常的代码。

  • 多个异常一次捕获,多次处理

    try包含所有可能出现异常的代码,交给多个catch块进行处理。

    多catch块内异常对象必须是子类在上,父类在下。
    在这里插入图片描述

  • 多个异常一次捕获一次处理

    try包含所有可能出现异常的代码,交给一个声明Exception对象的catch块进行处理。

(2)finally有return语句

  • finally有return语句,永远返回finally中的结果,避免这样书写。
    在这里插入图片描述

2.8、自定义异常类

(1)声明格式

public class 异常类名 extend Exception | RunTimeException{
    无参构造方法;
    全参构造方法;
}

(2)注意事项

  • 自定义异常类类名一般以Exception结尾

  • 自定义异常,必须继承Exception或者RunTimeException

    继承Exception:为编译期异常

    继承RunTimeException:为运行期异常

(3)代码实例

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chsec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值