如何使用try {} catch(){}阻止

时间:2016-10-31 20:38:30

标签: java error-handling runtime-error indexoutofboundsexception

假设在您的程序中,您可能会收到IndexOutOfBoundsException。我正在以下列方式处理它:

try{
//throws an IndexOutOfBoundsException during runtime
}catch(IndexOutOfBoundsException ex){
System.err.println(ex);
}

这只会显示 java.lang.IndexOutOfBoundsException 。但是我希望显示一个详细的错误消息(它不会终止程序),就像java给我们的那些消息(lineNumber,fileName等),当我们不处理错误并因此终止程序时。 / p>

4 个答案:

答案 0 :(得分:3)

使用[Display(Name = "Label Me This")] public Nullable<decimal> MyDecimal { get; set; } 方法打印例外:

ex.printStackTrace()

Demo.

如果您在不希望控制台输出的环境中运行,请调用try { int[] x = new int[1]; x[2] = 5; } catch (IndexOutOfBoundsException ex) { ex.printStackTrace(); } System.err.println("Program completed successfully"); ,并以与程序用户界面一致的方式显示元素。

答案 1 :(得分:3)

在Java中,您可以在任何异常对象上使用DataTemplate来获取由Java打印的堆栈跟踪。在你的情况下,最小的:

printStackTrace

这会将堆栈跟踪打印到try { // Throw an IndexOutOfBoundsException } catch (IndexOutOfBoundsException ex) { ex.printStackTrace(); } 。您也可以将打印流或System.err传递给该特定流。

此外,如果您使用java logger,则可以使用:

System.out

记录异常。有关详细信息,请参阅:https://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html

答案 2 :(得分:0)

从我的一位老师那里得到了这个。可能对像我这样的其他初学者很有帮助。 (这不是任何h.w./assignment/etc。好奇心的一部分。)

public class ExceptionDemo{
public static void main(String[] args){
    int[] array = new int[2];
    try {
        System.out.println(array[100]);//non-existent
    } catch (IndexOutOfBoundsException ex){
        StackTraceElement[] e = ex.getStackTrace();
        System.err.println("Got error= " + ex + "\n"+
                           "in file "+e[0].getFileName() +"\n"+
                           "in class "+e[0].getClassName() +"\n"+
                           "in method "+e[0].getMethodName() +"\n"+
                           "in line "+e[0].getLineNumber());
        System.err.println("Full trace= ");
        ex.printStackTrace(System.err);
    }
    System.out.println("As Salamu Alaikum");
  }
}

答案 3 :(得分:-1)

您可以使用

ex.GetMessage()

由于