【问题标题】:scala Error handling inside a function函数内部的错误处理
【发布时间】:2017-08-24 06:18:13
【问题描述】:

我的 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 函数的最后一行我收到了无法访问的代码错误。 你能帮我找出我在这里做错了什么吗?

【问题讨论】:

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


    【解决方案1】:

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

    顺便说一句,下次您发布代码时,请包含所需的imports,并检查以确保您的代码按所示编译。

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 2021-03-31
      • 2011-01-08
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 2014-08-29
      相关资源
      最近更新 更多