模式匹配Scala中的所有子类

Han*_*xue 1 inheritance scala subclass pattern-matching

我正在使用第三方库,其中异常导致类型的类RETCODE_ERROR.这是层次结构的选择.

返回代码类层次结构

不确定类是否实现Throwable,我希望模式匹配超类RETCODE_ERROR.

try {
  // perform action here
} catch {
  case e.asInstanceOf[RETCODE_ERROR] => // handle exception
}
Run Code Online (Sandbox Code Playgroud)

这有用,还是有更好的方法?

om-*_*nom 6

所有的荣誉应该实际上转到@Jesper:

try {
  // perform action here
} catch {
  case e: RETCODE_ERROR => // handle exception
}
Run Code Online (Sandbox Code Playgroud)

如果你想匹配某些类的类,你可以很好地枚举它们:

try {
  // perform action here
} catch {
  case e: (RETCODE_NO_DATA | RETCODE_ALREADY_DELETED) => // handle exception
}
Run Code Online (Sandbox Code Playgroud)