scala函数内部的错误处理
scala Error handling inside a function
我的 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 函数的最后一行出现无法访问的代码错误。
你能帮我找出我做错了什么吗?
如果在第 2 个 catch
块之后添加 finally {}
,事情似乎就清楚了。我不确定为什么。我自己从不使用 try/catch/finally
。我更喜欢标准库中的 Scala Try
class。
顺便说一句,下次您 post 代码时,请包含所需的 import
,并检查以确保您的代码能够按所提供的进行编译。
我的 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 函数的最后一行出现无法访问的代码错误。 你能帮我找出我做错了什么吗?
如果在第 2 个 catch
块之后添加 finally {}
,事情似乎就清楚了。我不确定为什么。我自己从不使用 try/catch/finally
。我更喜欢标准库中的 Scala Try
class。
顺便说一句,下次您 post 代码时,请包含所需的 import
,并检查以确保您的代码能够按所提供的进行编译。