scala - Scala试试,其他,除 block

标签 scala error-handling try-catch

我有这样的代码:

val extractInfo: (Array[Byte] => String) = (fp: Array[Byte]) => {

  val parser:Parser = new AutoDetectParser()
  val handler:BodyContentHandler = new BodyContentHandler(Integer.MAX_VALUE)
  val config:TesseractOCRConfig  = new TesseractOCRConfig()
  val pdfConfig:PDFParserConfig = new PDFParserConfig()

  val inputstream:InputStream = new ByteArrayInputStream(fp)

  val metadata:Metadata = new  Metadata()
  val parseContext:ParseContext = new ParseContext()
  parseContext.set(classOf[TesseractOCRConfig], config)
  parseContext.set(classOf[PDFParserConfig], pdfConfig)
  parseContext.set(classOf[Parser], parser)
  parser.parse(inputstream, handler, metadata, parseContext)

  handler.toString
}

使用Apache Tika解析PDF文本的函数文字。

不过,我想要的是一个try块,该块在parser.parse上运行,如果无法执行,则返回一个空字符串。我不确定如何在Scala中构造这种逻辑。

最佳答案

我认为您正在寻找的是Try

val extractInfo: (Array[Byte] => String) = (fp: Array[Byte]) => Try {
  val parser:Parser = new AutoDetectParser()
  ...
  handler.toString
} getOrElse("")

这样做是捕获主体中的任何错误,并通过返回空字符串从此错误中恢复。

关于scala - Scala试试,其他,除 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38472976/

相关文章:

java - trycatch block 中出现 NullPointerException

javascript - Selenium 在 Try block 中崩溃

scala - 无法从 scala 访问 java 静态方法

scala - 暴露来自单例类型的路径依赖类型

php - 即使禁用 VERIFYPEER、VERIFYHOST 也会出现 SSL 连接错误

python - turtle.TurtleGraphicsError没有注册?

date - 在福昕阅读器中取消日期完整性检查

java - 关于try-with-resources语句的查询

Scala groupBy 用于列表

scala - 了解 Scala -> 语法