测试代码:

/**
     * 测试异常抛出及捕捉
     */
    @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. centos6利用cgroup冻结一个程序运行

    操作步骤: 安装cgroup服务 yum install libcgroup 配置cgroup vim /etc/cgconfig.conf group stopit{ #添加一个cgroup组 fr ...

  2. Winform 美化

    首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件. 将主窗体FormBorderStyle更改为None,这样就得到了 ...

  3. Java性能 -- 线程上下文切换

    线程数量 在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行 线程数量设置太小,会导致程序不能充分地利用系统资源 线程数量设置太大,可能带来资源的过度竞争,导致上下文切换,带来的额外的系统 ...

  4. linux下oracle无法删除用户

    Oracle删除用户的提示无法删除当前已连接用户.且无法kill掉用户进程的两种解决方法如下: 1.先锁定用户.然后查询进程号,最后删除对应的进程.在删除对应的用户 SQL>alter user ...

  5. PL/SQL Developer报错 ORA-12154:tns:could not resolve the connect identifier specified

    PL/SQL Developer使用预先配置数据库报错 ORA-12154:tns:could not resolve the connect identifier specified. 情况描述:我 ...

  6. 【前端_css】RGB 常用颜色列表

    转载博客:RGB 常用颜色列表

  7. Centos7 下安装Redis4.0.6

    一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@iZwz991stxd ...

  8. 错误: 找不到或无法加载主类 com.leyou.LeyouItemApplication Process finished with exit code 1

    在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译: 尝试:菜单--->Build--->Re ...

  9. woocommerce如何隐藏/显示product meta

    前面我们说了woocommerce如何隐藏SKU,那如果不想显示产品分类category和标签tag呢?我们知道SKU, Category list 和 Tag list在woocommerce产品页 ...

  10. 不使用已下载的package pip 安装 & 出现time out error

    pip install XX + --no-cache-dir 安装出现time out error时: pip --default-timeout=10000 install XX