此文只作为个人测试记录,对他人无实际参考意义!

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测试记录相关推荐

  1. 软件测试bug文档模板,软件bug测试记录模板

    软件bug测试记录模板 XXX软件bug测试记录表 文档编号: 背景信息 项目名称 测试目的 硬件环境 软件环境 测试时间 测试人员 测试说明 1.严重等级: A-Crash(崩溃的):由于程序所引起 ...

  2. 测试记录流水s1 0080481T02

    0917 测试记录

  3. android 结束if循环_几款Android反编译器对循环结构的还原能力测试记录

    本帖最后由 gjden 于 2019-6-26 14:35 编辑 几款Android反编译器对循环结构的还原能力测试记录 0.motivation 喜欢jadx的人会常常吐槽JEB反编译器:卖的这么贵 ...

  4. X64_Xcelera-CL_PX4采集卡测试记录

    X64_Xcelera-CL_PX4采集卡测试记录 1)  采集卡可以分配两块板载内存,每一块的大小等于采集图像的内存大小: 2)  两块板载内存的大小之和应小于板载总内存(128MB),否则会出现内 ...

  5. oracle分区唯一索引,关于分区表与唯一索引的测试记录

    关于分区表与唯一索引的测试记录 SQL> connect eygle/eygle Connected. SQL> CREATE TABLE docinfo( 2  docid    NUM ...

  6. 微信小程序跳转微信小程序,使用微信开发者工具的测试记录

    微信小程序跳转微信小程序,使用微信开发者工具的测试记录 A小程序 跳转 B小程序 编写A小程序代码 参数解释 编写B小程序接收参数代码 微信开发者工具测试 A小程序 跳转 B小程序 编写A小程序代码 ...

  7. 传奇服务器包裹元宝数量显示,GOM传奇服务端测试记录元宝,传奇GM版本库测试区记录元宝数量教程...

    GOM传奇服务端测试记录元宝,传奇GM版本库测试区记录元宝数量教程 本文出处:网游动力作者:本站发布时间:2019-09-01阅读次数: [@main] #IF #ACT OPENMERCHANTBI ...

  8. 达梦数据库的TPCC测试记录

    达梦数据库的TPCC测试记录 测试环境 本文主要目的是介绍使用 benchmarksql工具进行 TPCC 测试的步骤 使用工具版本:benchmarksql-4.1.1 服务器:华为泰山v1 CPU ...

  9. 企微群机器人 markdown消息测试记录

    背景 需要在系统上配置企业微信群机器人报警,其他的都比较简单,拼接markdown格式的推送消息比较麻烦. 官方链接:https://work.weixin.qq.com/api/doc/90000/ ...

最新文章

  1. 【转】java线程系列---Runnable和Thread的区别
  2. HDU - 1394 Minimum Inversion Number(树状数组)
  3. php mvc和mvvm,mvvm模式和mvc模式的区别是什么
  4. 十天学会ASP.Net——(8)
  5. 我用过 | Keil的发展历史
  6. Dijkstra算法--斐波那契堆,Python实现
  7. CoreDNS 1.9.0 openEuler 21.09 测试报告
  8. LAMP 技术简介(5)
  9. 让Meebo自动变换背景的客户端脚本
  10. Flink实践 | 360 政企安全基于 Flink 的 PB 级数据即席查询实践
  11. winedit使用教程_【STemWin教程入门篇】第43章 EDIT-编辑控件
  12. 【转载】ADB命令使用大全
  13. php后端aes加密前端解密
  14. 在线炒股天载分析市场呈现出一片跌势
  15. jQuery基础(二)
  16. Cisco Packet Tracer 简介和安装
  17. ikigai人生四叶草模型:找到你的甜蜜点
  18. Merkcle Tree
  19. 中国大学MOOC课程信息之数据分析可视化二
  20. 学习C语言,困难吗?

热门文章

  1. 前端工程师必须收藏的 JavaScript 资源大全
  2. C#文件流FileStream的用法
  3. 云媒易:如何打造抖音推广人设,加深用户记忆点?
  4. 山水功放与音箱接线图_山水音响一般是怎么接线?
  5. 锐派出品:LOL新年特辑S4各类细节之下路篇
  6. IPad开发环境安装配置图文
  7. 关闭防火墙和杀毒软件并开启远程桌面
  8. linux中查看ftp所有用户,怎么查看linux下的所有用户
  9. QT 5.11.1 + OpenGL 第一篇(OpenGL在Qt中几个版本)
  10. 最远距离(C++实现)