有关java中的try{}catch(){}的讲解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38225558/article/details/82054100
try {
可能出现异常的代码(包括不会出现异常的代码)
} catch (Exception e) { //()里为接收try{}代码块中出现异常的类型
如果出现异常时的处理方式
}
try-catch的执行顺序:
①从 try{ } 代码块中第一行开始执行,执行到出现异常的代码,jvm会创建一个异常对象
②判断catch中声明的异常类型是否能捕捉到jvm创建的异常对象
i: 能捕捉到:直接跳到catch代码块中执行。 不会结束程序,继续从catch代码块后面的代码执行
ii: 不能捕捉到:直接打印异常信息并结束程序
③try{} 中没有出现任何异常,把try中的所有代码执行完,跳过catch继续程序
注意:
1.能被catch捕捉到的条件 ==》try中创建的异常对象的类型与catch中声明的类型一致,或者是catch中声明的类型的子类。
2.如果只有一个捕捉指定类型的catch 只能捕捉对应类型的异常对象。 如果try中创建了其他类型的异常,捕捉不到。Jvm来处理异常
3.try{}代码块中存在多行代码会抛出异常的情况下,遇到第一个异常,后面代码的异常 只会被catch捕捉到异常信息但都将不会被执行
4.那么我们如何才能处理try{}中的每一个异常呢??
① 写多个catch : 每一个catch处理一种异常 ==> try{ }catch(){ }catch(){ }catch(){ }
效果:当try中出现了异常,直接跳到第一个catch处判断,是否能捕捉。
a:能捕捉:直接处理。 然后跳过trycatch往后执行
b:不能捕捉:跳到下一个catch继续判断。如果下一个能捕捉,重复第一步的效果
c:所有catch都不能捕捉 ==> 交给jvm处理:结束程序,在控制台打印异常信息
② 写一个catch 要求:catch中的异常类型必须是try中抛出的所有异常的父类
注意事项:写多个catch时,下边的catch声明的异常类型不能是上边的catch声明的子类。
多个catch时,异常父类必须在下边。 (没有继承关系时,就不用考虑此情况)
try{ }catch(){ }catch(){ }...finally{ } (catch可以有多个,也可以没有 ==》 try{ }finally{ })
特点:写在finally代码块中代码,一定会被执行到
注意:①执行了 return 也会执行finally
②但 执行 System.exit(0) 就不会再执行finally了!!!
ex1: (此时 Integer in = new Integer("1"); 不会出现异常的情况下)
ex2: (此时 Integer in = new Integer("A1"); 出现异常的情况下)
ex3: 多个catch
ex4 :1个catch
ex5: return不影响finally{ }代码块中代码的执行
ex6 : 执行 System.exit(0) ==》 便不会再执行finally{ }代码块中代码
————————————————
版权声明:本文为CSDN博主「郑清」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38225558/article/details/82054100
有关java中的try{}catch(){}的讲解的更多相关文章
- 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...
- [转载]java中try 与catch的使用
留着以后看 原文地址:与catch的使用">java中try 与catch的使用作者:碌碌如玉 try{ //代码区 }catch(Exception e){ //异常处理 } 代码区 ...
- Java 中 try、catch、finally 语句块的执行顺序
假设代码顺序书写如下:try → catch → finally → 其他代码 则: 1.正常执行顺序:try → catch → finally → 其他代码 2.try,catch和finally ...
- java中try 与catch的使用
(2011-10-08 17:08:43) 转载▼ 标签: 杂谈 分类: Java try{//代码区}catch(Exception e){//异常处理}代码区如果有错误,就会返回所写异常的处理. ...
- 在java中的Try Catch块-------------异常处理(2)
1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may c ...
- 你真的理解Java中的try/catch/finally吗?
看几个例子,回顾一下执行顺序 例子1 无异常,finally中的return会导致提前返回 public static String test() { try { System.o ...
- 关于java中getClass()和getSuperClass()的讲解
为了讲解这个问题,我们先来看一下下面的代码: package com.yonyou.test; import java.util.Date; class Test extends Date{ priv ...
- Java中的try catch finaly先后调用顺序
自我总结,有什么不足或好的方案,希望大家给予纠正,感激不尽! 目的:try catch finaly的顺序执行,和大家复习一遍. 方法:debug来确认执行顺序.(需要引入junit包) 废话不多说, ...
- Java 中的 try catch 影响性能吗?
前几天在 code review 时发现有一段代码中存在滥用try catch的现象.其实这种行为我们也许都经历过,刚参加工作想尽量避免出现崩溃问题,因此在很多地方都想着 try catch一下. 但 ...
随机推荐
- 通过redash query results 数据源实现跨数据库的查询
redash 提供了一个简单的 query results 可以帮助我们进行跨数据源的查询处理 底层数据的存储是基于sqlite的,期望后期有调整(毕竟处理能力有限),同时 query results ...
- comlink 是来自google chrome 团队的简化webwokers 开发的类库
comlink 可以帮助我们简单webworkers 的开发,同时很小(1.1kb),具体使用我们可以看下面 一张图 说明 comlink 使用起来也比较方便,官方也提供了完整的api 文档 参考资 ...
- 使用git_stats 统计分析git 仓库代码&& 集成webhook
前几天写过一个使用gitstats 统计分析代码的,但是那个因为开发的问题,对于直接和容器集成是有问题的,统计需要进入容器执行 命令,对于自动构建的还不是很方便,所以使用了git_stats 项目 ...
- 【后缀数组】【LuoguP4248】 [AHOI2013]差异
题目链接 题目描述 给定一个长度为 n 的字符串 S,令 Ti 表示它从第 i 个字符开始的后缀.求 \(\sum_{1\le i <j\le n}len(T_i)+len(T_j)-2*lcp ...
- php保存canvas导出的base64图片
代码如下: <?php $img='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABxCAYAAABoUdWRAAAAAXNSR0IAr ...
- python3中Requests将verify设置为False后,取消警告的方式
import requests resp = requests.get('https://www.***.com', verify=False) 调用成功但是会有如下警告信息: InsecureReq ...
- sprintf格式化字符串漏洞(转)
深入解析sprintf格式化字符串漏洞 特征: 如何利用: 可以看到, php源码中只对15种类型做了匹配, 其他字符类型都直接break了,php未做任何处理,直接跳过,所以导致了这个问题: 没做字 ...
- 第07组 Alpha冲刺(5/6)
队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:依然在完善网页编辑器的后端. 展示GitHub当日代码/文档签入记录:(组内共用,已询 ...
- Python推荐一整套开发工具
原文:https://sourcery.ai/blog/python-best-practices/ 在开始一个新的Python项目时,很容易不做规划直接进入编码环节.花费少量时间,用最好的工具设置项 ...
- 本地git工作流
一:add后的回退代码 1.在原有已经的基础上,又新增加了一个小需求 经过修改,添加到暂存区. 这个时候,会存在modified文件: 2.然后,又说需求不需要存在了 可以进行丢弃 在reset后,需 ...