Java中的异常处理
2021/11/23 14:10:31
本文主要是介绍Java中的异常处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 一、异常
- 1、异常体系
- 2. try-catch块中存在return语句,是否还执行finally块 ,如果执行,说出执行顺序 try-catch- finally块中:
- 3.finally块唯一不执行的情况是什么:
- 4、Throwable的成员方法:
- 5、编译时异常和运行时异常的区别:
- 异常处理原则:
一、异常
1、异常体系
Error:严重问题,不需要处理
Exception:称为异常类,它表示程序本身可以处理的问题。RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码。
非RuntimeException:编译期就必须要处理的,否则程序不能通过编译,就更不能正常运行了。
异常处理:java中的异常处理是通过5个关键字来实现的:
try、catch、finally、throw、throws
try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一。
try:可能发生异常的代码块;
Catch:可以捕获的异常,可以有多个catch;
Finall:不管怎么办,这个代码块都会运行;
Throw:手动抛出异常关键字;
Throws:由方法自动抛出异常。
try { 可能出现异常的代码; }catch(异常类名 变量名){ 异常处理代码; }finally{ 最终执行的代码块; }
程序从try里面的代码开始执行出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统。
当Java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理执行完毕之后,程序换可以继续往下执行。
2. try-catch块中存在return语句,是否还执行finally块 ,如果执行,说出执行顺序 try-catch- finally块中:
1、不管有没有出现异常,finally块中代码都会执行。
2、当try和catch中有return时,finally仍然会执行。
3、Finally是在return后面的表达式运算后执行的(此时没有返回运算后的值,而是把先要返回的值保存起来,不管finally中的代码怎么样,返回值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的。例如:
代码如下(示例):
public class FinallyTest { public static void main(String[] args) { System.out.println(new FinallyTest().test()); } static int test(){ int x = 1; try{ x++; return x; }finally{ ++x; } } }
返回值是2
1、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
2、如果finally中没有return语句,但是改变了要返回的值,这里有点类似与引用传递和值传递的区别,分以下两种情况:
①如果return的数据是基本数据类型或文本字符串,则在finally中对该基本数据的改变不起作用,try中的return语句依然会返回进入finally块之前保留的值
②如果return的数据类型是引用数据类型,而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的值就是在finally中改变后的该属性的值
3.finally块唯一不执行的情况是什么:
解一: try之前异常,系统报错,当然不会执行finally
解二 : try 或 catch块中,如果有exit()会使程序提前退出
font color=#999AAA >该处使用的url网络请求的数据。
4、Throwable的成员方法:
5、编译时异常和运行时异常的区别:
Java中的异常分为两大类:
编译时异常和运行时异常,也被称为受检异常和非受检异常
异常处理之throws:
throws 异常类名;
注意:这个格式是跟在方法的括号后面的
编译时异常必须要进行处理,两种方案:try…catch或者throws,如果采用throws这种方案,将来谁调用谁处理。
运行时异常可以不处理,出现问题后,需要我们回来修改代码。
自定义异常:
Public class 异常类名 extends Exception{ 无参构造; 带参构造; }
throws和throw的区别:
异常处理原则:
提示:这里对文章进行总结:
异常处理与性能
异常只能用于非正常情况
不要将过于庞大的代码块放在try中
在catch中指定具体的异常类型
需要对捕获的异常做处理
这篇关于Java中的异常处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现