カスタム例外をスローしようとしています。
カスタム例外クラスの実装は次のとおりです。
case class customException(smth:String) extends Exception
私のコードでは、customExceptionをスローするためにtry/catchで例外をスローすると確信しているコードをラップしました。
try{
val stateCapitals = Map(
"Alabama" -> "Montgomery",
"Alaska" -> "Juneau",
"Wyoming" -> "Cheyenne")
println("Alabama: " + stateCapitals.get("AlabamaA").get)
}
catch{
case x:Exception=>throw classOf[CustomException]
}
次のようなコンパイルエラーが発生しました。
found : Java.lang.Class[CustomException]
[INFO] required: Java.lang.Throwable
[INFO] case x:Exception=>throw classOf[CustomException]
このケースで独自のカスタム例外をスローするにはどうすればよいですか?後で、スローされた例外が特定の処理を行うためにtype [x]であるかどうかを確認しています。
あなたは例外を投げているのではなく、例外のクラスです(コンパイラのエラーメッセージを読んでください...)。例外インスタンスをスローする必要があります。
case x:Exception => throw new CustomException("whatever")
また、Exceptionクラスの定義を次のように変更すると役立ちます。
case class customException(smth:String) extends Exception(smth)