测试代码:

/**
     * 测试异常抛出及捕捉
     */
    @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主动抛异常的几种方式及捕捉结果输出对比的更多相关文章

  1. ASP.NET中处理异常的几种方式

    1.程序中使用try catch 对于预知会发生异常的代码段使用try catch主动捕获异常,适用于提示给用户或跳转到错误页面,或者通过其它方式处理异常(日志.通知等). int i = 10; i ...

  2. java动态获取WebService的两种方式(复杂参数类型)

    java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...

  3. C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路

    C#不用union,而是有更好的方式实现   用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C# ...

  4. Spring MVC处理异常的4种方式

    http://blog.csdn.net/ufo2910628/article/details/40399539 http://my.oschina.net/CandyDesire/blog/3333 ...

  5. Java中HashMap遍历的两种方式

    Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...

  6. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  7. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  8. java 实现md5加密的三种方式与解密

      java 实现md5加密的三种方式 CreateTime--2018年5月31日15点04分 Author:Marydon 一.解密 说明:截止文章发布,Java没有实现解密,但是已有网站可以免费 ...

  9. Java 读取 .properties 文件的几种方式

    Java 读取 .properties 配置文件的几种方式   Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 ...

随机推荐

  1. Windows Server 2008 R2 install Visual Studio 2015 failed

    Please download and install Windows Server 2008 R2 Service Pack 1 (KB976932) . https://www.microsoft ...

  2. 安装win10和ubuntu双系统

    2019-06-22 ​ 最近找了一份新的工作,要用到linux,由于之前基本上没有接触过这方面的东西,所以今天捣鼓一下,安装win10和linux双系统,办公研发双不误. 如果在安装的过程中遇到什么 ...

  3. 改变src图片不更新

    var url = response + "?r" + Math.random();[完美解决修改src不更新图片]$('#loginimage').attr("src& ...

  4. Flask笔记:session

    session与cookie: cookie是一项浏览器的技术,而不是服务器的技术,服务器端是无法直接操作cookie的,只能通过返回Response响应告诉浏览器怎么操作cookie.而sessio ...

  5. JPA笔记1 ManyToOne

    persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence ver ...

  6. Angular i18n(国际化方案)

    一.引言 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.在资讯领域,国际化(i18n)指让产品(出版物,软件,硬件等)无 ...

  7. Django的路由系统:URL

    一. URLconf配置 基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图,参数,别名), ] 参数说明 ...

  8. Telegram Android源码问题汇总 持续更新

    libtgvoip目录为空 git clone下来的工程中带有submodule时,submodule的内容没有下载下来,执行如下命令 cd Telegram git submodule update ...

  9. 网络编程ssh,粘包

    1.什么是socket? TCP,可靠地,面向连接协议,有阻塞rect udp,不可靠的,无线连接的服务 这里因为不需要阻塞,所以速度会很快,但安全性不高 2.关于客户端退出而服务器未退出的解决办法 ...

  10. 【POJ3784】Running Median

    Running Median Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3406   Accepted: 1576 De ...