除了异常堆栈跟踪中的行号外,还包括源列号

时间:2014-10-21 06:34:20

标签: java exception exception-handling

代码

int x = 0;
int y = 1 / x;

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at sample.MyClass.main(MyClass.java:16)

我怎样才能得到像

这样的人
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at sample.MyClass.main(MyClass.java:16,12)[/code]

2 个答案:

答案 0 :(得分:2)

你做不到。当您打印例外时,它包含StackTraceElement

这是上述结果的负责方法

 public StackTraceElement(String declaringClass, String methodName,
                             String fileName, int lineNumber) {
  this.declaringClass = Objects.requireNonNull(declaringClass, "Declaring class is null");
  this.methodName     = Objects.requireNonNull(methodName, "Method name is null");
  this.fileName       = fileName;
  this.lineNumber     = lineNumber;
 }

此处无法设置列号。

同样StackTraceElementfinal类。你不能扩展它和override

答案 1 :(得分:0)

不可能。如果您想获得更精确的行号,请使用额外的回车符,如下例所示:

yourObject.
    aMethod().
         anotherMethod().
             aLastMethod();