我有这样的代码:
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/