使用多个流处理Scala异常

时间:2014-02-25 14:21:53

标签: scala

我有以下处理多个流的方法,现在我想在功能样式中添加异常处理。有什么建议吗?

private def convertToByte(json: String): Array[Byte] = {

    val bytes= json.getBytes("UTF-8")
    val bin: ByteArrayInputStream = new ByteArrayInputStream(bytes)
    val bos: ByteArrayOutputStream = new ByteArrayOutputStream()
    val gzip: GZIPOutputStream = new GZIPOutputStream(bos)
    val buff = new Array[Byte](1024)
    var len = bin.read(buff)

    while(len != -1) 
    {
        gzip.write(buff, 0, len)
        len = bin.read(buff)
    }

    gzip.finish()
    bin.close()
    bos.close()
    gzip.close()
    bos.toByteArray
}

我想在finally块中包含所有调用close,同时,如果发生异常,我想捕获它并将错误消息作为字节数组返回。在使用Java之后,我的手自动采用命令式方式将代码片段包装在try catch中,但我正在考虑通过将其包装在更高阶函数中来以函数方式编写它。但是我开始坚持了。有什么指针吗?

0 个答案:

没有答案