java - 我们能否在发生异常的try block 中获取LineNumber和ColumnNumber

标签 java exception exception-handling try-catch catch-block

我有以下代码,可以打印发生错误的全类名、类名、方法名。

此外,我能够打印行号,但打印的行号是初始化变量“LineNumber”的行。

如何在发生错误的 try block 中打印准确的 LineNumber 和 ColumnNumber?

try
{
    SQL Query
}
catch(Exception e)
{
   String fullClassName = Thread.currentThread().getStackTrace()[1].getClassName();              
   String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);  
   String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();  
   int lineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();  

     JOptionPane.showMessageDialog(null,fullClassName+"--"+className+"--"+methodName+"--"+lineNumber,"Error In Moving data from table1 to table2",JOptionPane.ERROR_MESSAGE);                         

}

输出:

  IPM.Shifting--Shifting--ConfirmTransfer_BActionPerformed--1138

最佳答案

public class ExceptionHandler {

    /**
     * @param args
     */
    public static void main(String[] args) {

        try {
            String str = getString();
            if(str.isEmpty()){
                System.out.println("error");
            }
        } catch (Exception e) {
            StackTraceElement[] elements = e.getStackTrace();  
            for (int iterator=1; iterator<=elements.length; iterator++)  
                   System.out.println("Class Name:"+elements[iterator-1].getClassName()+" Method Name:"+elements[iterator-1].getMethodName()+" Line Number:"+elements[iterator-1].getLineNumber());
        }
    }

    private static String getString() {
        jhgfjkhgjh();
        return null;
    }

    private static void jhgfjkhgjh() {
        gfdhdfghdg();
    }

    private static void gfdhdfghdg() {
        sdfytusdgsfd();
    }

    private static void sdfytusdgsfd() {
        throw null;
    }



}

关于java - 我们能否在发生异常的try block 中获取LineNumber和ColumnNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14235687/

相关文章:

java - 为什么 java 编译器会为单个 java 文件生成多个 .class 文件?

java - String 的 replaceAll() 方法和转义字符

jsp - JSP Servlet 中的最佳实践错误处理

exception-handling - ARM7 处理器何时增加其 PC 寄存器?

java - 基于异步队列的文件写入

java - 如何将 XML(字符串)附加到已创建文档开头的 XmlEventWriter (StAX)

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

c# - 尝试复制另一个进程拥有的文件会导致 DirectoryNotFoundException 吗?

Java:抛出异常可以抛出异常吗?

c# - 在 C# 中捕获 StackOverflow 异常的通用方法是什么?