1

Scalaでプログラムを書きました。デフォルトのコンストラクターには、これらの行があります。

private val url = new URL("http://www.  **  .xml")   //  throws  UnknownHostException
private val conn = url.openConnection
private val doc = XML.load(conn.getInputStream)

ご存じのように、インターネット通信に問題がある場合、例外がスローされることがあります。

これらの行を try/catch block に書き込むいくつかの方法を試しました。しかし、クラスの他の場所、これらの変数を使用する場所で、他のコンパイルエラーが表示されるたびに。

もちろん、ブロック内に記述し、変数を public として定義しました。

誰かがそれを正しく行う方法の例を書いてもらえますか?

具体的ではないかもしれませんが、正確にどこに問題があるのか​​わからないため、正確に何を説明すればよいかわかりませんでした。

4

2 に答える 2

1

try/catch ブロックにパターン マッチングを使用することは、Scala でこれにアプローチする慣用的な方法です。

import java.net.URL
import java.net._
import scala.xml.XML
try{
  val url = new URL("http://www. ** .xml")
  val conn = url.openConnection 
  val doc = XML.load(conn.getInputStream)
}catch{
  case uhe:UnknownHostException => println(uhe)
}
于 2013-01-08T07:05:14.823 に答える
0

これは改善かもしれません:

import java.net.URL
import java.net._
import scala.xml.XML

val doc =
  try {
    val url = new URL("http://www.xxx.yyy/XYZZY.xml")
    val conn = url.openConnection
    Right(XML.load(conn.getInputStream))
  }
  catch {
    case ex: Exception => Left(ex)
  }

doc match {
  case Right(xmlDoc) => // Do stuff with the doc XML
  case Left(ex)      => // Do error stuff with the exception
}
于 2013-01-08T22:02:46.970 に答える