java基础—5.异常处理

本文详细介绍了Java中的异常处理机制,包括异常的概念、异常体系结构、异常处理的方式(try/catch和throws)、RuntimeException的特点以及如何自定义异常。文章还提供了一些异常处理的原则和实践建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

异常是对问题的描述。将问题进行对象的封装
|--异常的作用是:
	1.将问题进行封装;
	2.将正常流程代码和问题处理代码相分离,方便于阅读。
|--异常的体系
|--Throwable
|--Error   ------>不可以 处理的错误,如JAVA 虚拟机出现错误
|--Exception    ------->可处理的异常
|--RuntimeException
	RuntimeException类是Exception类的子类,它叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类
|--非RuntimeException
	Java中凡是继承自Exception,而不继承自RuntimeException类的异常都是非运行时异常。

二、异常的处理

如果函数内部声明了异常,就必须进行处理(RuntimeException除外)。异常有两种处理方式,throws和try/catch
|--异常的处理原则
1.处理方式有两种:try和 throws
2.调用到抛出异常的功能时,抛出几个,就处理几个。一个try对应多个catch
3.多个catch,父类的catch放到最 下面;
4.catch内,需要定义针对性的处理方式。不要简单的定义printStackTrace,也不 要不写。当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。
try{
	throw new AException();
}catch(AException e){
	throw e;
}
5.catch内,处理不了时,可以将异常转换后,在抛出和该功能相关的异常,或抛出相关的新的异常。
try{
	throw new AException();
}catch(AException e){
	throw new BException();
}
|--异常的处理
|--try/catch
try{
	需要被检测的代码;
}
catch(异常类  变量){
	处理异常的代码;(处理方式)
}finally{
	一定会执行的语句;
}
注:
|--1.可以使用多个catch块来捕获异常,这时需要将父类型的catch块放到子类型的catch块之后,这样才能保证后续的catch块可能被执行,否则子类型的catch块将永远无法到达,Java编译器会报错。
|--2.finally 可以省略不写
|--throws 在函数上进行异常声明,让调用者进行处理
	如果不进行这两种方式处理编译是不会通过的。(除了Exception中的特殊一个子类RuntimeException)

三、throw和throws

异常体系的所有类以及建立的对象都具备可抛性。也就是说可以被throw和throws关键字所操作。只有异常体系具备这个特点。
|--throw
	throw定义在函数内,用于抛出异常对象。
|--throws
	throws定义在函数上,用于抛出异常类,可以抛出多个异常,用逗号相隔。

四、RuntimeException

Exception中有一个特殊的子类异常RuntimeException运行时异常。对于运行时异常(RutimeException),可以对其进行处理,也可以不处理。推荐不对运行时异常进行处理。
|--特点
	1.如果在函数内容抛出该异常,函数上可以不用声明,编译可以通过;
	2.如果在函数上声明了该异常,调用者可以不用进行处理。编译一样通过

五、自定义异常

自定义异常类继承了Exception或者RuntimeException,当要定义自定义异常的信息时,可以使用父类已经定义好的功能,异常信息传递给父类的构造函数。
|--自定义异常的作用是:
	1.为了让该自定义类具备可抛性。
	2.让该类具备操作异常的共性方法。
|--在子父类覆盖时:
	1.子类抛出的异常必须是父类的异常的子类或都子集;
	2.如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try,不能抛;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值