1

我用 Scala 编写了一个程序。在默认构造函数中,我有这些行。

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

如您所知,如果您有 Internet 通信问题,可能会抛出 Exception。

我尝试了几种方法在 try/catch 块中编写这些行。但是每次它在我使用这些变量的地方,在类的其他地方,都会向我显示其他编译错误。

当然,我将它们写在一个块中,我将变量定义为公共的。

有人可以给我写一个如何正确执行的示例吗?

我可能不够具体,但我不知道具体要解释什么,因为我不知道问题到底出在哪里。

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 回答