【发布时间】:2019-02-28 12:22:39
【问题描述】:
考虑一个嵌套结构,其中相关属性如下:
case class Validation { sql: Option[SqlDataSource] }
case class SqlDataSource { dfh: Option[DataFrameHolder] }
case class DataFrameHolder { sql: Option[String] }
我目前处理这个的天真的方式是:
val ssql = expVal.sql.getOrElse(
vc.dfh.map(_.sql
.getOrElse(throw new IllegalStateException(s"$logMsg CompareDF: Missing sql container"))
).getOrElse(throw new IllegalStateException(s"$logMsg CompareDF: dfh missing sql"))
.sql.getOrElse(throw new IllegalStateException(s"$logMsg CompareDF: Missing sql")))
虽然这确实完成了工作,但它也对读者不友好且对开发人员不友好(很难正确嵌套)。有什么更好的处理方法的想法吗?
更新感谢您的出色回答 - 这将有助于清理和简化前进的异常处理代码。
【问题讨论】:
-
vc来自哪里?$logMsg是在哪里组成的?
标签: scala