-1

エラーの行は、エラーの種類がto_return = find(list,false);ある場合、この行の行番号を取得するにはどうすればよいですか? NullPointerExceptionまたは一般的に行番号で?

私はいくつかのことを試しました。最も近いのはこれCalled.getLineNumber()で、行番号を教えてくれますStackTraceElement Called = new Throwable().fillInStackTrace().getStackTrace()[0];

public TestObject[] myfind(Subitem list )throws Exception{
    TestObject[]to_return=null;
    try {
        to_return = find(list,false);
    }
    catch (RationalTestException ex) {
        //logStoreException(ex);
        StackTraceElement Called = new Throwable().fillInStackTrace().getStackTrace()[0];
        StackTraceElement Calling = new Throwable().fillInStackTrace().getStackTrace()[1];
        throw new Exception (this.add_debugging_info(Called, Calling, ex.getMessage()));

    }   
    catch (NullPointerException npe) {
        StackTraceElement Called = new Throwable().fillInStackTrace().getStackTrace()[0];
        StackTraceElement Calling = new Throwable().fillInStackTrace().getStackTrace()[1];
        logStoreException(npe);
        System.out.println("Line number: "+npe.getStackTrace()[0].getLineNumber()); 
        System.out.println("Line number2: "+Integer.toString(Called.getLineNumber()));
        System.out.println(this.add_debugging_info(Called, Calling, npe.getMessage()));
        throw new Exception (this.add_debugging_info(Called, Calling, npe.getMessage()));
    }   
    catch (Exception ex) {
        StackTraceElement Called = new Throwable().fillInStackTrace().getStackTrace()[0];
        StackTraceElement Calling = new Throwable().fillInStackTrace().getStackTrace()[1];
        throw new Exception (this.add_debugging_info(Called, Calling, ex.getMessage()));

    } 
    finally {
        //unregisterAll();
        //unregister(to);
        return to_return;
    }
}
4

2 に答える 2