gpt4 book ai didi

java - 如何识别具有特定数据的 throwable

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:48 28 4
gpt4 key购买 nike

我已经捕获了任何未捕获的异常

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
}
});

在方法内部,我想以不同于其他异常的方式处理以下异常:

Caused by: java.lang.NullPointerException
at com.company.si.stats.Statistics.hashString(Statistics.java:192)
at com.company.si.stats.Statistics.sendStatistics(Statistics.java:127)

我基本上想检查它是否是来自 com.company.si.stats.Statistics.hashString

的空指针异常

我该怎么做?我不确定我应该比较 throwable 中的哪些参数?

抛出异常的代码不是我写的,所以我无法更改任何内容。

重要提示我知道我处理这个问题的方式不对。但是我无法访问引发异常的库,我需要一个解决方法,直到库中的错误得到修复。选择这个答案是因为它满足了我需要的,而不是通常应该定义的

最佳答案

免责声明

这是在评论中提出的建议,我认为将其添加为答案是个好主意,但请记住这不是您应该做的,因此请使用此答案作为示例不处理此类问题。也请随意对其投反对票。


您可以通过looking at its stack trace 查看异常的来源。 ,或者至少在第一个堆栈跟踪元素。

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
StackTraceElement[] stackTrace = e.getStackTrace();
if (e instanceof NullPointerException &&
stackTrace != null && stackTrace.length >= 0 &&
"Statistics.java".equals(stackTrace[0].getFileName()) &&
"hashString".equals(stackTrace[0].getMethodName()) &&
192 == stackTrace[0].getLineNumber()) {
// Handle your exception here.
}
}
});

你不应该这样做的原因:

  1. 真的很丑
  2. hashString 方法中的任何更改都会使它变得无用
  3. 因为妈妈这么说
  4. Statistics 类中的任何更改都会使它变得无用
  5. 在 2 或 4 的情况下,查找由该异常引起的错误可能真的很痛苦
  6. 不可移植(考虑以后换库)
  7. 这是不好的做法

关于java - 如何识别具有特定数据的 throwable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445610/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com