gpt4 book ai didi

java - 查找 java/grails 中抛出异常的行号

转载 作者:行者123 更新时间:2023-11-30 04:10:07 25 4
gpt4 key购买 nike

我必须编写逻辑来检测哪一行代码引发了异常,以便我们稍后可以修复该问题。异常对象的 getStackTrace() 为我们提供了一个堆栈跟踪列表,每个堆栈跟踪都有级别。我对获得抛出异常的最低位置不感兴趣,而是对负责传递参数的类方法感兴趣。这是我要问的示例

class Test {
void divide() {
try{
float i = 1/0
}
catch(Exception e){
def v = e.getStackTrace()[0]
println v.getClassName()
}
}
}

这将打印类 java.math.BigDecimal 但我有兴趣获得测试类,这样我就可以去它的划分并修复这个错误。现在,测试出现在第 n 行,我在运行时无法知道。一种方法是迭代堆栈跟踪列表并尝试查找自定义开发的类,但如何检测它?或者如果有一些库函数已经可以做到这一点那就太好了。

最佳答案

试试这个:

println e.stackTrace.find {
it.className == 'Test' && it.methodName == 'divide'
}

或者,我猜你想检查堆栈跟踪的所有级别,然后:

Throwable t = e
StackTraceElement found = null
while (!found && t) {
found = e.stackTrace.find {
it.className == 'Test' && it.methodName == 'divide'
}
t = e.cause
}
println found

关于java - 查找 java/grails 中抛出异常的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com