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 配置文件需要通过 ...
随机推荐
- Java面试- JVM 内存模型讲解
经常有人会有这么一个疑惑,难道 Java 开发就一定要懂得 JVM 的原理吗?我不懂 JVM ,但我照样可以开发.确实,但如果懂得了 JVM ,可以让你在技术的这条路上走的更远一些. JVM 的重要性 ...
- 关于 L3 缓存行 cacheLIne 的研究!还是对程序有举足轻重的作用!
https://www.cnblogs.com/PurpleTide/archive/2010/11/25/1887506.html CLR via C# 读书笔记 2-3 Cache Lines a ...
- python 字符前缀,运算符、换行符、数据类型和变量
补充 *)/ 表示的除法即使是整数,结果也是浮点数 *)python表示的整数是没有大小限制的.而某些语言根据其储存长度是有大小限制的.例如Java对32位整数的范围限制在-2147483648-21 ...
- “金九银十”已过,总结我的天猫、蚂蚁、头条面试经历(Java岗)
跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽.切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的 ...
- Java实现QQ邮件发送
首先我们需要两个jar包,点击下面即可下载这两个包: JavaMail mail.jar 1.4.5 JAF(版本 1.1.1) activation.jar 我们这里采用QQ邮箱发送邮件为例,代码如 ...
- git报错 - remote: HTTP Basic: Access denied
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 git 拉取代码报: remote: HTTP Basic: Access denied,这是因为你的GIT密码修改后,需要重新认证授权,那么怎么操 ...
- Docker 安装mysql以及外部访问
(1)因为我们的镜像是linux环境下的,我所在的系统是windows系统.首先通过docker客户端切换到linux环境下. (2)使用docker pull mysql/mysql-server ...
- iSCSI的配置(target/initiator)
iSCSI:Internet 小型计算机系统接口 (iSCSI:Internet Small Computer System Interface) iSCSI技术是一种由IBM公司研究开发的,是一个供 ...
- JUnit 4 和 TestNG
JUnit 4和TestNG都是Java中非常受欢迎的单元测试框架.两种框架在功能上看起来非常相似.哪一个更好?在Java项目中应该使用哪个单元测试框架? 下面表中概括了JUnit 4和TestNG之 ...
- java 启动jar 指定端口
java 启动jar 指定端口 java -jar xxx.jar --server.port=80