Java基础 -- 异常处理
2022/6/13 1:20:24
本文主要是介绍Java基础 -- 异常处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java基础 -- 异常处理
1.异常体系结构
(图片来源见水印)
*常见问题:Error和Exception的区别?
- Error:程序无法处理的错误,error发生时,JVM会选择线程终止
- Exception:程序本身可以处理的异常,可以用catch来捕获
*常见问题:Checked Exception 和 Unchecked Exception的区别?
- checked exception:受检查异常,编译过程中不被catch或者throw的话没办法通过编译
- unchecked exception:不受检查编译,编译过程中不被catch或者throw的话也可以通过编译
2.怎么处理异常?
处理异常一共有三种方式:
- 方式一:对异常进行捕捉并处理try-catch-finally
try { //可能会出现异常的代码 } catch (异常类型1 异常类型对象) { //发生异常1后执行的代码 } catch (异常类型2 异常类型2) { ... //发生异常2后执行的代码 } finally { //不发生异常执行的代码 }
【注】多个catch:异常范围小的放在前面,范围大的放在后面
*常见问题:try,catch以及finally的作用?
- try块内放置可能会引起异常的代码
- catch块用于处置指明异常类型的代码
- finally块用于回收try块内打开的物理资源(异常机制会保证finally块总被执行)
*常见问题:finally什么情况下不会被执行?
- 不进入try块:在try块之前就返回
- 程序中止:System.exit(0);JVM中止运行
- 线程中止:守护线程中存在finally代码块,那么当所有的非守护线程中止时,守护线程被kill掉,其finally代码块是不会执行的
*常见问题:finally的执行与return关系
-
情形一:try-catch块中有return语句,finally语句仍会被执行
-
情形二:finally块中有return语句,finally块中的return语句会覆盖try-catch中的return语句
-
方式二:throw抛出异常
throw只抛出异常,不处理异常
throw new 异常类名(参数);
- 方式三:throws声明异常
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ }
*常见问题:throw和throws的区别?
-
位置不同:
- throws作用在函数上,后面可以跟着多个异常类;
- throw作用在函数内,后面跟着异常对象
-
功能不同:
- throw抛出异常(只是抛出异常,不处理异常),到这一步功能结束
- throws声明异常,让调用者知道可能出现的问题,有异常交给上层处
理
-
发生异常可能性不同:
- throws表示异常不一定会发生,只是一种可能性;
- throw表示一定发生了异常,抛出了某种异常对象
*常见问题:final, finally, finalize的区别?
-
final:修饰符,用于修饰类,变量或者方法。被修饰的类不能被其他类继承;被修饰的变量必须显式指定初始值且赋值后不能被重新赋值,通常与static一起使用创建类常量;被修饰的方法可以被子类继承,不能被子类重写
-
fianlly:用于异常处理
-
finalize:方法名,主要用于垃圾回收
3.自定义异常类
https://zhuanlan.zhihu.com/p/450346339
4.参考资料
https://www.cnblogs.com/13roky/p/14672500.html
https://www.bilibili.com/read/cv16217199?spm_id_from=333.999.0.0
这篇关于Java基础 -- 异常处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南