このコードは "I've failed"を例外として返します。Scala試してみて、違う失敗例
Try({
throw new Exception()
}) match {
case Failure(e) => println("I've failed")
case Success(s) => println("I've succeeded")
}
しかし、私のようなさまざまな例外、持っている場合:
Try({
if(someBoolean) {
throw new DifferentException()
} else {
throw new Exception()
}
}) match {
case Failure(e) => println("I've failed")
case Success(s) => println("I've succeeded")
}
を我々はException
とDifferentException
に異なる場合がありますように、私は一致ステートメントを変更するにはどうすればよいですか?
私はこれを行うことができます理解:
Try({
if(true) {
throw new DifferentException()
} else {
throw new Exception()
}
}) match {
case Failure(e) if e.isInstanceOf[DifferentException] => println("I've failed differently")
case Failure(e) if e.isInstanceOf[Exception] => println("I've failed")
case Success(s) => println("I've succeeded")
}
は、このようなを達成するための最良の、すなわち少なくとも冗長、方法は何ですか?
[編集]
アシェットありがとうございます。少なくとも冗長、私にとっては、これだった:
case class DifferentException() extends Exception() {}
Try({
if(someBoolean) {
throw new DifferentException
} else {
throw new Exception
}
}) match {
case Failure(DifferentException()) => println("I've failed differently")
case Failure(e) => println("I've failed")
case Success(s) => println("I've succeeded")
}
はありがとうございます。結局、前者が最高だった。 – newfivefour