scala函数内部的错误处理

时间:2017-08-24 06:18:14

标签: scala error-handling try-catch user-defined-functions

我的scala代码出现问题:

class ClassMyHelper {

  protected var logger: Logger = LogManager.getLogger(classOf[AvroHelper])

   def somefunc(schema: Schema, datum: GenericRecord): Array[Byte] = {
    <code>
    var byteData: Array[Byte] = null
    try {
      <code>
      byteData = os.toByteArray()
      //byteData
    } catch {
      case e: IOException =>
        logger.error("IOException encountered!! ", e)

      case e: Exception =>
        logger.error("Something went wrong!! ", e)

    } finally try os.close()
    catch {
      case e: IOException =>
        logger.error("IOException encountered while closing output stream!! ", e)

      case e: Exception =>
        logger.error("Something went wrong while closing output stream!! ", e)

    }
    byteData //Unreachable code
  }
}

问题是somefunc函数的最后一行我得到了一个无法访问的代码错误。 能否请你帮我确定我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

如果您在第二个finally {}块之后添加catch,则事情似乎会清除。我不知道为什么。我自己从不使用try/catch/finally。我更喜欢标准库中的Scala Try类。

顺便说一句,下次发布代码时请包含所需的import,并检查以确保您的代码按照提供的方式进行编译。