Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取异常发生,以及在哪个方法中,导致异常发生的原因是什么?_Java_Android_Exception Handling - Fatal编程技术网

Java 如何获取异常发生,以及在哪个方法中,导致异常发生的原因是什么?

Java 如何获取异常发生,以及在哪个方法中,导致异常发生的原因是什么?,java,android,exception-handling,Java,Android,Exception Handling,我的项目中有很多try catch block。我必须在我的项目中发送className、methodName和异常发生的原因。请建议怎么做?有什么方便的方法吗?正如一位评论者所指出的,信息在stacktrace输出中 此外,Throwable类提供了一个getStacktrace()方法,该方法返回一个StackTraceElement对象数组,这些对象以更方便的形式提供相同的信息 当然,“原因”信息(例如异常名称、消息和causeexception(如果有))也可以通过其他Throwable

我的项目中有很多
try catch block
。我必须在我的项目中发送
className、methodName和异常发生的原因。请建议怎么做?有什么方便的方法吗?

正如一位评论者所指出的,信息在stacktrace输出中

此外,
Throwable
类提供了一个
getStacktrace()
方法,该方法返回一个
StackTraceElement
对象数组,这些对象以更方便的形式提供相同的信息

当然,“原因”信息(例如异常名称、消息和
cause
exception(如果有))也可以通过其他
Throwable
方法检索


在我的项目中,我有很多尝试捕捉块

这可能是你问题的一部分。如果您试图捕获、诊断和恢复接近其源代码的异常,那么您可能需要编写大量代码。通常最好允许异常传播,并在更高级别上处理它们


第二点是,您可能不想告诉最终用户有关类、方法、行号等的信息。最终用户需要一条不可怕且易于理解的错误消息,该消息(最好)指向用户的错误以及如何修复/避免错误。详细信息只应提供给开发人员/管理员,对他们来说,完整的stacktrace(在应用程序的日志文件中!)是最好的选择。

Stack trace本身提供了所有信息。不清楚。可能您正在寻找ACRA或类似产品,例如,请参阅
 public void showProgress() {
    try {
        if (progress == null)
            progress = new ProgressDialog(mActivity);
        progress.setMessage("Please Wait..");
        progress.setCancelable(false);
        progress.show();
    } catch (Exception e) {
        e.printStackTrace();
        try {
            progress = new ProgressDialog(mActivity);
            progress.setMessage("Please Wait..");
            progress.setCancelable(false);
            progress.show();
        } catch (Exception e2) {
            e2.printStackTrace();

        }
    }

}