Java异常处理获取控制台错误信息

标签 java exception

我想在生成异常时使用java获取错误消息。

现在我有以下场景的java代码:

method first(){

     try{
        second();
     }catch(Exception e){
        System.out.println("Error:> "+e)
     }

}
<小时/>
method second(){

     try{
       my code
     }catch(Exception e){
        throw new Exception("Exception generate in second method",e);
     }

}

现在,当第一个方法执行时,我只收到“第二个方法中生成异常”消息,但 java 在控制台上打印了一些其他消息,那么如何获取该控制台错误消息。

注意:我已经尝试过 e.getMessage();和 e.printStackTrace();

最佳答案

每个异常都有一个可以通过 getCause() 获取的原因。您可以递归地向下查找,直到找到根本原因。下面是一个实用程序的示例,该实用程序可以像控制台一样转储异常及其所有原因。

private void first() {
    try  {
        second();
    } catch (Exception ex) {
        Log.e("CATCH", getExceptionDump(ex));
    }
}

private void second() {
    try {
        throw new UnsupportedOperationException("We don't do this.");
    } catch (Exception ex) {
        throw new RuntimeException("Exception in second()", ex);
    }
}

private String getExceptionDump(Exception ex) {
    StringBuilder result = new StringBuilder();
    for (Throwable cause = ex; cause != null; cause = cause.getCause()) {
        if (result.length() > 0)
            result.append("Caused by: ");
        result.append(cause.getClass().getName());
        result.append(": ");
        result.append(cause.getMessage());
        result.append("\n");
        for (StackTraceElement element: cause.getStackTrace()) {
            result.append("\tat ");
            result.append(element.getMethodName());
            result.append("(");
            result.append(element.getFileName());
            result.append(":");
            result.append(element.getLineNumber());
            result.append(")\n");
        }
    }
    return result.toString();
}

关于Java异常处理获取控制台错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336437/

相关文章:

java - 对于 java 上的幻想草稿程序,我如何将数据从文本文件加载到单独的 ArrayList 列表中?

java - MediaSession finishBroadcast() 异常

java.lang.RuntimeException : Unable to instantiate application, java.lang.ClassNotFoundException:

java - 如何保护我的 Android 应用免受 RESKIN 攻击?

java - 从 ListView 拖放到 TreeView

java - Junit4 @Parameterized.Parameters 和参数类型不匹配异常

java - 启动eclipse平台进行junit测试时出现异常

.net - 如何修复 COMException 错误 80040154?

java - 如何知道 Android 上的应用/游戏是否通过通知启动?

java - 分页点燃缓存的正确方法是什么?