0

例外ブレークポイントを設定して IDE から Grails 2.1.5 アプリを起動しますNumberFormatException(つまり、この例外がスローされるたびにアプリケーションが中断されます)。

次に、Grails コンソールから次のコードを実行すると:

import  groovy.util.*
import groovyx.net.http.*

def uri = 'http://ws.audioscrobbler.com/2.0/?artist=Yelle&mbid=f43d43c8-eedf-4628-99b0-04120e7124c8&method=artist.gettopalbums&api_key=6e331f856413a5e3dfc91ec41cea5415&limit=6'

XmlSlurper().parse(uri)

次のコードが原因で、例外ブレークポイントがトリガーされますLong.parseLong

public static long parseLong(String s, int radix)
          throws NumberFormatException
{
    if (s == null) {
        throw new NumberFormatException("null");
    }

    // rest of method omitted
}

ただXmlSlurper().parse(uri)、期待値を返しているようなので、どこかでこの例外が処理されているのだろうと思いますが、どこかわかりません。Long.parseLong最初のパラメーターに null 値を指定して が呼び出される理由に戸惑っています。これはバグですか、XmlSlurperそれとも奇妙な実装の詳細ですか?

アップデート

リクエストに応じて、コール スタックを次に示します。JDK 7 と Groovy 1.8.8 を使用しています。自分でデバッグしてみましたが、ご覧のとおり、関連するソース ファイルがたくさんありません。

  at java.lang.Long.parseLong(Long.java:404)
  at java.lang.Long.parseLong(Long.java:483)
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1571)
  at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source:-1)
  at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source:-1)
  at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source:-1)
  at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source:-1)
  at org.apache.xerces.parsers.XMLParser.parse(Unknown Source:-1)
  at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source:-1)
  at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source:-1)
  at groovy.util.XmlSlurper.parse(XmlSlurper.java:146)
  at groovy.util.XmlSlurper.parse(XmlSlurper.java:212)
4

1 に答える 1