当前位置: 首页 > 面试题库 >

将异常转换为JSON

臧弘和
2023-03-14
问题内容

在Java 7中是否可以将Exception对象转换为Json?

例:

try {      
    //something
} catch(Exception ex) {     
    Gson gson = new Gson();
    System.out.println(gson.toJson(ex));
}

问题答案:

从理论上讲,您还可以遍历堆栈跟踪中的元素并生成如下内容:

{ "NullPointerException" :
    { "Exception in thread \"main\" java.lang.NullPointerException",
        { 
          "Book.java:16" : "com.example.myproject.Book.getTitle",
          "Author.java:25" : "at com.example.myproject.Author.getBookTitles",
          "Bootstrap.java:14" : "at com.example.myproject.Bootstrap.main()"
        }
    },
  "Caused By" :
    { "Exception in thread \"main\" java.lang.NullPointerException",
        { 
          "Book.java:16" : "com.example.myproject.Book.getTitle",
          "Author.java:25" : "at com.example.myproject.Author.getBookTitles",
          "Bootstrap.java:14" : "at com.example.myproject.Bootstrap.main()"
        }
    }
}

您可以像这样遍历异常:

catch (Exception cause) {
    StackTraceElement elements[] = cause.getStackTrace();
    for (int i = 0, n = elements.length; i < n; i++) {       
        System.err.println(elements[i].getFileName()
            + ":" + elements[i].getLineNumber() 
            + ">> "
            + elements[i].getMethodName() + "()");
    }
}


 类似资料:
  • 问题内容: 我有一个问题,我的应用生成了此异常,我听不懂。我已经在我的build.gradle中实现了multiDexEnabled 我的班级Java } 文件摇篮 Manifest.xml 问题答案: 我认为您应该将班级扩展到自己的班级,如下所示: 之后,您必须将文件更改为此: 请检查此链接以获取更多信息:http : //developer.android.com/reference/andr

  • 问题内容: 我正在尝试将MySQLi查询错误转换为“异常”,但不能-仅在无法连接数据库时抛出mysqli_sql_exception。 我使用了程序化的MySQLi函数嵌入到自定义包装器类中。 以前的代码: 问题: 查询失败是否正常,没有警告,也没有引发异常,所以我必须检查mysqli_query()是否返回false? 问题答案: 不久前,我设法解决了这个问题。正如在其他答案中指出的那样, 是告

  • 我正在尝试将实体转换为DTO,DTO用于Rest服务。 我的实体如下: 以及相关的DTO: 我使用ModelMapper以便将我的实体转换为DTO,反之亦然。但是,当我向Rest API发送请求时,会出现以下错误: 最初,实体中的读取类型是LAZY,我把它改成了EAGER,它可以工作。但是我已经读到这对项目的表现不利。我已经尝试了OpenSessionInViewFilter在Web应用程序初始化

  • 我在代码上收到一条错误消息,以查找支付200美元佣金的员工的总工资。一旦输入了所有员工的总销售额,就应该打印出属于每个不同薪酬类别的员工销售额。下面是代码: 这是我收到的确切错误消息: 我相信这与双重转换有关,但我不确定这有什么问题?有没有人能帮我搞清楚哪里出问题了(它编译没有错误)?我也尝试过只有双精度(包括数组),但这并没有解决问题。

  • 我有一把钥匙: 信息: 十六进制的hmac输出: 因此,如果我创建一个新的BigInteger(测试),如: 如果我想得到十六进制值,比如: 我明白了: 问题出在哪里?或者,如何从消息中计算hmac-sha256并使用Beginning中的大整数。 key、message和hmac是字节数组。 如果我尝试将字节“11010100”转换为Bigintger,它会转换为负“-101100”为什么Big

  • 我在尝试按照firebase数据库的文档将数据检索到要使用的对象时,遇到了一个错误。 这是我的对象模型 最后,代码 这是我在Firebase中的数据库结构。 来自 logcat 的完整 Stacktrace 就在这里。