Groovy中的空指针异常

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

我得到了一个空点异常,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 =~ /\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     
        }    
      }   
    }
  }
}