Exception测试记录
此文只作为个人测试记录,对他人无实际参考意义!
1、程序异常or不异常
public class ExceptionTest {public static void test(){ int a = 1 / 0; System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.example.demo.filter.ExceptionTest.test(ExceptionTest.java:5)
at com.example.demo.filter.ExceptionTest.main(ExceptionTest.java:10)
结论:程序出现异常后,System.out输出语句不执行
若int a = 1 / 0;换成 int a = 1 / 1;则正常输出test success!
2、进行try catch
public class ExceptionTest {public static void test(){try{ int a = 1 / 0; }catch (Exception e){System.out.println("try catch success!");}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:
try catch success!
test success!
结论:正常catch后,程序会执行catch里面的语句,并接着往下执行!
若int a = 1 / 0;换成 int a = 1 / 1;则无异常,catch中的语句不会执行,只输出
test success!
3、return + try catch
1)在try异常语句块后return;(在异常语句前return编译器检查不通过) public class ExceptionTest {public static void test(){try{int a = 1 / 0;return;}catch (Exception e){System.out.println("try catch success!");}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:
try catch success!
test success!
public class ExceptionTest {public static void test(){try{int a = 1 / 1;return;}catch (Exception e){System.out.println("try catch success!");}System.out.println("test success!");}public static void main(String[] args) {test();} }
无输出
结论:try中异常语句后的return不会执行,try异常被catch后会接着执行catch语句块中的语句及之后的语句;如果try中无异常且return后,catch语句块和之后的就不会执行。
加上finally试试:
public class ExceptionTest {public static void test(){try{int a = 1 / 1;return;}catch (Exception e){System.out.println("try catch success!");//return;}finally{System.out.println("finally success!");}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:finally success!
public class ExceptionTest {public static void test(){try{int a = 1 / 0;return;}catch (Exception e){System.out.println("try catch success!");//return;}finally{System.out.println("finally success!");}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:
try catch success!
finally success!
test success!
结论:try中return前,finally中的语句还是会执行的。
2) 只有catch中return
public class ExceptionTest {public static void test(){try{int a = 1 / 0;return;}catch (Exception e){System.out.println("try catch success!");return;}System.out.println("test success!");//两个return后此句会检查出错}public static void main(String[] args) {test();} }
public class ExceptionTest {public static void test(){try{int a = 1 / 0; //return; }catch (Exception e){System.out.println("try catch success!");return;}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:try catch success!
public class ExceptionTest {public static void test(){try{int a = 1 / 1;//return;}catch (Exception e){System.out.println("try catch success!");return;}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:test success!
结论:若异常,catch中return后不执行后续语句;若无异常,则不执行catch中的语句。
PS:加上finally试试。
public class ExceptionTest {public static void test(){try{int a = 1 / 0;//return;}catch (Exception e){System.out.println("try catch success!");return;}finally{System.out.println("finally success!");}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:try catch success!
finally success!
public class ExceptionTest {public static void test(){try{int a = 1 / 1;//return;}catch (Exception e){System.out.println("try catch success!");return;}finally{System.out.println("finally success!");}System.out.println("test success!");}public static void main(String[] args) {test();} }
输出:finally success!
test success!
结论自己体会!!!
3、finally中return
public class ExceptionTest {public static void test(){try{int a = 1 / 0;//return;}catch (Exception e){System.out.println("try catch success!");//return;}finally{System.out.println("finally success!");return;} System.out.println("test success!");//编译器检查不通过 }public static void main(String[] args) {test();} }
注释后,其它几种情况同catch中return
结论:见上!try、catch、finally中都return,以finally中的为准!
4、带值return
public class ExceptionTest {public static String test(){String str = "fsyy";try{int a = 1 / 0;return str + "try";}catch (Exception e){//System.out.println("try catch success!");return str + "catch";}finally{//System.out.println("finally success!");return str + "finally";}//System.out.println("test success!");}public static void main(String[] args) {System.out.println(test());} }
输出:fsyyfinally
public class ExceptionTest {public static String test(){String str = "fsyy";try{ int a = 1 / 0;return str = str + "try"; }catch (Exception e){//System.out.println("try catch success!"); return str = str + "catch"; }finally{//System.out.println("finally success!"); return str = str + "finally"; }//System.out.println("test success!");}public static void main(String[] args) {System.out.println(test());} }
输出:fsyycatchfinally
public class ExceptionTest {public static String test(){String str = "fsyy";try{ int a = 1 / 1; return str = str + "try";}catch (Exception e){//System.out.println("try catch success!");return str = str + "catch";}finally{//System.out.println("finally success!");return str = str + "finally";}//System.out.println("test success!");}public static void main(String[] args) {System.out.println(test());} }
输出:fsyytryfinally
结论:finally最后return。
5、奇怪的知识,暂未发现原理
public class ExceptionTest {public static String test(){String str = "fsyy";try{ int a = 1 / 0; return str = str + "try";}catch (Exception e){//System.out.println("try catch success!");//return str = str + "catch";str = str + "catch";}finally{//System.out.println("finally success!");//return str = str + "finally";str = str + "finally";}//System.out.println("test success!");return str = str + "end";}public static void main(String[] args) {System.out.println(test());} }
输出:fsyycatchfinallyend
但是当无异常时,输出fsyytry,且语句最后有return,catch和finally中都不能带return。
public class ExceptionTest {public static String test(){String str = "fsyy";try{ int a = 1 / 1; return str = str + "try";}catch (Exception e){//System.out.println("try catch success!");//return str = str + "catch";str = str + "catch";}finally{//System.out.println("finally success!");//return str = str + "finally";str = str + "finally";}//System.out.println("test success!");return str = str + "end";}public static void main(String[] args) {System.out.println(test());} }
输出:fsyytry
猜测结论是:无异常时try中return后会屏蔽语句最后的return
Exception测试记录相关推荐
- 软件测试bug文档模板,软件bug测试记录模板
软件bug测试记录模板 XXX软件bug测试记录表 文档编号: 背景信息 项目名称 测试目的 硬件环境 软件环境 测试时间 测试人员 测试说明 1.严重等级: A-Crash(崩溃的):由于程序所引起 ...
- 测试记录流水s1 0080481T02
0917 测试记录
- android 结束if循环_几款Android反编译器对循环结构的还原能力测试记录
本帖最后由 gjden 于 2019-6-26 14:35 编辑 几款Android反编译器对循环结构的还原能力测试记录 0.motivation 喜欢jadx的人会常常吐槽JEB反编译器:卖的这么贵 ...
- X64_Xcelera-CL_PX4采集卡测试记录
X64_Xcelera-CL_PX4采集卡测试记录 1) 采集卡可以分配两块板载内存,每一块的大小等于采集图像的内存大小: 2) 两块板载内存的大小之和应小于板载总内存(128MB),否则会出现内 ...
- oracle分区唯一索引,关于分区表与唯一索引的测试记录
关于分区表与唯一索引的测试记录 SQL> connect eygle/eygle Connected. SQL> CREATE TABLE docinfo( 2 docid NUM ...
- 微信小程序跳转微信小程序,使用微信开发者工具的测试记录
微信小程序跳转微信小程序,使用微信开发者工具的测试记录 A小程序 跳转 B小程序 编写A小程序代码 参数解释 编写B小程序接收参数代码 微信开发者工具测试 A小程序 跳转 B小程序 编写A小程序代码 ...
- 传奇服务器包裹元宝数量显示,GOM传奇服务端测试记录元宝,传奇GM版本库测试区记录元宝数量教程...
GOM传奇服务端测试记录元宝,传奇GM版本库测试区记录元宝数量教程 本文出处:网游动力作者:本站发布时间:2019-09-01阅读次数: [@main] #IF #ACT OPENMERCHANTBI ...
- 达梦数据库的TPCC测试记录
达梦数据库的TPCC测试记录 测试环境 本文主要目的是介绍使用 benchmarksql工具进行 TPCC 测试的步骤 使用工具版本:benchmarksql-4.1.1 服务器:华为泰山v1 CPU ...
- 企微群机器人 markdown消息测试记录
背景 需要在系统上配置企业微信群机器人报警,其他的都比较简单,拼接markdown格式的推送消息比较麻烦. 官方链接:https://work.weixin.qq.com/api/doc/90000/ ...
最新文章
- 【转】java线程系列---Runnable和Thread的区别
- HDU - 1394 Minimum Inversion Number(树状数组)
- php mvc和mvvm,mvvm模式和mvc模式的区别是什么
- 十天学会ASP.Net——(8)
- 我用过 | Keil的发展历史
- Dijkstra算法--斐波那契堆,Python实现
- CoreDNS 1.9.0 openEuler 21.09 测试报告
- LAMP 技术简介(5)
- 让Meebo自动变换背景的客户端脚本
- Flink实践 | 360 政企安全基于 Flink 的 PB 级数据即席查询实践
- winedit使用教程_【STemWin教程入门篇】第43章 EDIT-编辑控件
- 【转载】ADB命令使用大全
- php后端aes加密前端解密
- 在线炒股天载分析市场呈现出一片跌势
- jQuery基础(二)
- Cisco Packet Tracer 简介和安装
- ikigai人生四叶草模型:找到你的甜蜜点
- Merkcle Tree
- 中国大学MOOC课程信息之数据分析可视化二
- 学习C语言,困难吗?