Groovy中的空指针异常
我得到了一个空点异常,GroovyShell不再指定它发生的位置。据说有3个,第一个出现在扫描行Groovy中的空指针异常,groovy,nullpointerexception,Groovy,Nullpointerexception,我得到了一个空点异常,GroovyShell不再指定它发生的位置。据说有3个,第一个出现在扫描行scans.each{item-> 如果你敢…: use( groovy.time.TimeCategory ) { new File( 'C:\\Users\\pro-services\\Documents\\ScanEngineDetailFake.log' ).eachLine { line -> m = line =~ d log = line matcher = (log
scans.each{item->
如果你敢…:
use( groovy.time.TimeCategory ) {
new File( 'C:\\Users\\pro-services\\Documents\\ScanEngineDetailFake.log' ).eachLine { line ->
m = line =~ d
log = line
matcher = (log =~ /\d{2}:\d{2}:\d{2},\d{3}/)
matcher.count.times {
a = matcher[it]
if( a ) {
if( !prevDate ) {
prevDate = parseDate( a )
}
if (line ==~ c){
starts ++
prevDate = parseDate( a )
}
if (line ==~ d){
finishes ++
def nextDate = parseDate( a )
deltas << nextDate - prevDate
scans << line
}
}
}
有什么想法吗?我一直在研究其他空指针问题,但它们似乎都是特定于代码的,所以我想我只需将其添加到库中。
NullPointerException
联机扫描。每个
表示scans
为空引用。scans
未正确初始化。应该有这样一行:def scan=[]
之前,因此,扫描
被初始化为空列表。如果您编写了定义扫描
,则扫描被初始化为空指针。扫描定义在哪里?我只看到您试图将内容放入其中,但我不知道“它”是什么是的。哦,扫描是一个空列表,在原始列表中定义,但在我开始引用的上面。我将在星期四回到工作时修复它:)或者你可以执行scans?。每个{item->
使用空安全运算符我认为此时他的程序扫描不能为空。它在这里崩溃,因为它没有输入填充列表的条件,否则它将抛出扫描,我同意,但是扫描?。每个都将显示没有结果,因此注意力将转向matcher没有结果的原因工作,然后当它起作用时,注意力会转向为什么null谢谢大家。仍然有问题。Antoine,扫描在我的原始代码中定义为:def scans=[]
Tim,使用scans?。每个仍然抛出NPE,它在第76、78、83和96行找到它们(让我认为76是根本原因)-我编辑了我的问题代码来显示那些行号…所以它实际上说第一个NPE来自这一行:use(groovy.time.TimeCategory){
这是因为我在代码前面使用了这个方法吗。。。?
def startDate = null
def finDate = null
def filediff = null
76 use( groovy.time.TimeCategory ) {
78 scans.each { item ->
logs = item
matcher = (logs =~ /\d{2}:\d{2}:\d{2},\d{3}/)
83 matcher.count.times {
b = matcher[it]
if (logs ==~ c){
startDate = parseDate( b )
}
if (logs ==~ d){
finDate = parseDate( b )
96 filediff = finDate - startDate
deltas.each { diff ->
if (diff == filediff){
n = logs =~ c
println n[0][1]
println diff
}
}
}
}
}