JAVA主动抛异常的几种方式及捕捉结果输出对比
测试代码:
/**
* 测试异常抛出及捕捉
*/
@Test
public void test() {
try {
this.testA();
} catch (Exception ex) {
System.out.println(CoreUtils.exceptionToString(ex));
}
}
/**
* 测试测试
*/
private void testA() {
try {
String a = null;
a.length();
} catch (Exception ex) {
//各种继续抛出异常的方式
}
}
1. throw ex
java.lang.NullPointerException com.differ.jackyun.jackyunassservice.service.others.HgwTest.testA(HgwTest.java:) com.differ.jackyun.jackyunassservice.service.others.HgwTest.test(HgwTest.java:) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:) java.lang.reflect.Method.invoke(Method.java:) org.junit.runners.model.FrameworkMethod$.runReflectiveCall(FrameworkMethod.java:) org.junit.) org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:) org.junit.) org.junit.) ......
2. throw new RuntimeException(ex)
java.lang.RuntimeException: java.lang.NullPointerException com.differ.jackyun.jackyunassservice.service.others.HgwTest.testA(HgwTest.java:) com.differ.jackyun.jackyunassservice.service.others.HgwTest.test(HgwTest.java:) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:) java.lang.reflect.Method.invoke(Method.java:) org.junit.runners.model.FrameworkMethod$.runReflectiveCall(FrameworkMethod.java:) org.junit.) org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:) org.junit.) org.junit.) ......
3. throw new RuntimeException("执行某个功能发生异常", ex)
java.lang.RuntimeException: 执行某个功能发生异常 com.differ.jackyun.jackyunassservice.service.others.HgwTest.testA(HgwTest.java:) com.differ.jackyun.jackyunassservice.service.others.HgwTest.test(HgwTest.java:) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:) java.lang.reflect.Method.invoke(Method.java:) org.junit.runners.model.FrameworkMethod$.runReflectiveCall(FrameworkMethod.java:) org.junit.) org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:) org.junit.) org.junit.) ......
4. throw new RuntimeException("执行某个功能发生异常:" + CoreUtils.exceptionToString(ex))
java.lang.RuntimeException: 执行某个功能发生异常:java.lang.NullPointerException com.differ.jackyun.jackyunassservice.service.others.HgwTest.testA(HgwTest.java:) com.differ.jackyun.jackyunassservice.service.others.HgwTest.test(HgwTest.java:) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:) java.lang.reflect.Method.invoke(Method.java:) org.junit.runners.model.FrameworkMethod$.runReflectiveCall(FrameworkMethod.java:) org.junit.) org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:) org.junit.) org.junit.) ......
总结:第3种方式抛出的异常(即:throw new RuntimeException("执行某个功能发生异常", ex)),会丢失关键的异常原因,故开发时慎用!!!
JAVA主动抛异常的几种方式及捕捉结果输出对比的更多相关文章
- ASP.NET中处理异常的几种方式
1.程序中使用try catch 对于预知会发生异常的代码段使用try catch主动捕获异常,适用于提示给用户或跳转到错误页面,或者通过其它方式处理异常(日志.通知等). int i = 10; i ...
- java动态获取WebService的两种方式(复杂参数类型)
java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
C#不用union,而是有更好的方式实现 用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C# ...
- Spring MVC处理异常的4种方式
http://blog.csdn.net/ufo2910628/article/details/40399539 http://my.oschina.net/CandyDesire/blog/3333 ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- java 实现md5加密的三种方式与解密
java 实现md5加密的三种方式 CreateTime--2018年5月31日15点04分 Author:Marydon 一.解密 说明:截止文章发布,Java没有实现解密,但是已有网站可以免费 ...
- Java 读取 .properties 文件的几种方式
Java 读取 .properties 配置文件的几种方式 Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 ...
随机推荐
- [转载].NET ASP.NET 中web窗体(.aspx)利用ajax实现局部刷新
之前开发的一套系统中用到了大量的 checkboxList 控件,但是每次选定之后都会刷新整个页面,用户体验很差,百度了之后查到这篇文章,尝试了一下可以实现,所以转载了过来,记录一下,也给其他有相同困 ...
- Win10 手动安装 WSL 并修改默认登录用户为 root
首先要在"程序和功能"里面开启这个服务 然后重启系统使其生效. 然后打开 PowerShell,输入: Invoke-WebRequest -Uri https://aka.ms/ ...
- centos7安装mysql5.7(rpm安装版)
1.下载mysql5.7的rpm安装包 rpm的mysql包,安装起来简单,解压版的mysql还需要做许多配置,稍有不慎就会出错!!! 下载地址:https://dev.mysql.com/downl ...
- 50本.NTE、C#相关技术书籍免费下载
场景 近期囤积了一大批编程教程和电子书资料.至于视频教程,我一般是看完之后整理成相应的博客进行记录,一般不会再云盘中进行存取,因为很占空间. 至于电子书资料,很多,就是得一点点整理归纳. 近期我的公众 ...
- C#解析JSON数组
方式一 第一步:使用前,需下载:Newtonsoft.Json.dll 没有的,请到我百度云盘下载 链接:https://pan.baidu.com/s/1JBkee4qhtW7XOyYFiGOL2Q ...
- placeholder和assign速度对比
在CPU上,使用variable和placeholder效果差不多 在GPU上,使用variable要比每次都传placeholder快得多3:2 使用GPU的瓶颈主要在于GPU和内存之间的复制操作 ...
- VS2010 报错该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
尤其代码是从linux平台复制过来: 报错如图: 更有甚者基本函数都报错: 当下检查发现if else break case等基本函数并无问题时,报错行数明显不一致等一定要注意文档编码格式, 最简单的 ...
- 关于Qt 静态成员函数调用信号
class globalCalcThread; extern globalCalcThread *g_calcThread; class globalCalcThread : public QThre ...
- 封装简单的Ajax
调用请求: var obj = { url:"", //url地址 例如:test.php method:"", //get或post(大小写不限) 例如:ge ...
- maven 学习---使用Maven模板创建项目
在本教程中,我们将向你展示如何使用mvn archetype:generate从现有的Maven模板列表中生成项目.在Maven 3.3.3,有超过1000+个模板,Maven 团队已经过滤掉一些无用 ...