异常
异常
异常指程序运行中出现的不期而至的各种情况
发生在程序运行期间,影响了正常的程序执行流程
需要掌握的三种情况:
-
检查异常(非运行时异常):编译时可以看到,除了运行时异常,其他都是非运行时异常
-
不检查异常(运行时异常):编译时看不到,运行时才会出问题,这些异常其实就是我们的代码逻辑写错了,我们一定要手动改正
例如:
-
错误(不是异常):编译时检查不到,一般不是人为导致,而是jvm的原因,其实就是人写的代码让JVM出问题
Java把异常当做对象处理,并定义了一个基类java.lang.Throwable作为所有异常的超类
如图:
处理异常
- 抛出异常
- 捕获异常
五个关键字:try,catch,finally,throw,throws
//捕获异常的案例
public class lianxi {
public static void main(String[] args) {
int a=0;
int b=1;
try {//看是否有异常
System.out.println(b/a);
} catch (Exception e) {//捕获异常,参数为要捕获的异常类型,最大为throwable
e.printStackTrace();//打印错误的栈信息
} catch(Throwable t) {
//可以有多个捕获,但要注意异常类型是由小到大
} finally {
//善后工作,无论是否有异常都会执行
}
}
}
捕获异常快捷键:选中要捕获异常的语句,Ctrl+Alt+T
//抛出异常的案例
public class lianxi {
public static void main(String[] args) {
try {
new lianxi().test(1,0);
} catch (Exception e) {
e.printStackTrace();
}
}
//假设方法中处理不了这个异常,则在方法上抛出异常,让调用这个方法的来捕获它
public void test(int a,int b)throws ArithmeticException{
if (b==0){
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
}
}
}
自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况,初次之外,用户还可以自定义异常,自己创建异常类,只需要继承Exception类即可
总结
- 处理运行时异常时,采用逻辑去合理规避,同时辅助try-catch合理处理
- 在多重catch块后面,可以加一个catch(Exception)来处理可能被遗漏的异常
- 对于不确定的代码,也可以加上try-catch,处理潜在的异常
- 尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出
- 具体如何处理异常,要根据不同的业务需求和异常类型去决定
- 尽量添加finally语句块去释放占用的资源
树越是向往高处的光亮,它的根就越要向下,向泥土向黑暗的深处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?