Java错误捕获问题

Java错误捕获问题,java,class,try-catch,system.out,Java,Class,Try Catch,System.out,我设置了一个try/catch,它将捕获所有异常,然后显示错误 这是我的密码: try { //CODE THAT COULD ERROR HERE } catch (final Exception e) { System.err.println("Unexpected error: " + e.getStackTrace()[0]); } 上面的代码给出了最后一个出现错误的类。如何检测程序中最后一个出现错误的类 输出示例:“意外错误:package.ClassName.met

我设置了一个try/catch,它将捕获所有异常,然后显示错误

这是我的密码:

try {
    //CODE THAT COULD ERROR HERE
} catch (final Exception e) {
    System.err.println("Unexpected error: " + e.getStackTrace()[0]);
}
上面的代码给出了最后一个出现错误的类。如何检测程序中最后一个出现错误的类

输出示例:“意外错误:package.ClassName.method(ClassName.java:46)”

我希望它输出有错误的程序行,而不是由于我的程序而导致错误的内置java类的行

e.printStackTrace()
也许会让你更快乐。或者打印适当方法中可用的堆栈跟踪项数组的顶部

()

返回它们。第一个是你想要的

也许会让你更快乐。或者打印适当方法中可用的堆栈跟踪项数组的顶部

()

返回它们。第一个是您所要求的。

您可以使用它来获取实例数组,并根据您的包和/或类名对其进行筛选(使用for each element,为该堆栈跟踪帧提供完全限定的类名)。这将使您可以将其筛选到您的代码,而不是异常产生的JDK类。

您可以使用它来获取实例数组,并根据您的包和/或类名对其进行筛选(使用for each element,为该堆栈跟踪帧提供完全限定的类名)。这将使您可以将其筛选到代码中,而不是异常产生的JDK类中

        try {
            //error producing code
        } catch (Exception e) {
            for (StackTraceElement s : e.getStackTrace()) {
                if (!s.getClassName().startsWith("java.")) {
                    System.out.println("file name: " + s.getFileName());
                    System.out.println("class name: " + s.getClassName());
                    System.out.println("method name: " + s.getMethodName());
                    System.out.println("line number: " + s.getLineNumber());
                    System.out.println();
                    //break; // will be the highest non java package...
                }
            }
        }
当然,您可以将其切换为特定于包的,因此
if(s.getClassName().startsWith(“com.company”){
,这样它就不会返回第三方库或sun包或其他非java包中的内容


当然,如果(s.getClassName().startsWith(“com.company”)),您可以将其切换为特定于包的{因此它不会返回第三方库或sun包或其他非java包中的内容。

什么是“我的程序的类”意思?除非您给出您不喜欢的内容和您喜欢的内容,否则这毫无意义。应该避免使用像这样的非特定异常捕获。我捕获所有异常是为了防止我的小错误程序完全崩溃,无任何视觉反馈。
catch(可丢弃的e)
因为Throwable是基类;Exception扩展了它,并为所有需要
抛出的已检查异常形成基类。“我的程序的类”是什么意思?除非你告诉我们你不喜欢什么和你喜欢什么,否则这毫无意义。应该避免使用像这样的非特定异常捕获。我正在捕获一个ll异常,以防止我的小程序在没有任何视觉反馈的情况下完全崩溃。
catch(Throwable e)
因为Throwable是基类;Exception扩展了它,并为所有选中的异常形成基类,这些异常需要一个
throws
。我对此很熟悉,但我希望有一行错误。不像10+。是的……这更好,但我如何知道哪个堆栈是我程序中最具体的堆栈。第0个元素给了我base(这是一个Java类)。我对此很熟悉,但我希望有一行错误。不像10+。是的……这更好,但我如何知道哪个堆栈是我程序中最具体的堆栈。第0个元素给了我base(这是一个Java类)。