2012年1月6日金曜日

Scalatraでオレオレ例外をErrorHandling

Scalatraでは、errorメソッドを使うことで処理中に投げられた特定の例外を捕まえて、途中処理を挟むことができます。そのまま例外を投げ返すことで、HttpStatus=500(Internal server error)の結果をブラウザへと返してくれます。


class MyFilter extends ScalatraFilter {

error{
case e : MyException => {
// do anything.
throw e
}
}
}



ただ場合によっては、500番以外のHttpStatusCodeも返したいということもあると思います。
その時は次のようにすることで、特定の例外をキャッチして好きな結果を返すことができます。




class MyFilter extends ScalatraFilter {

error{
case e : NullPointerException => {
response.setStatus(200)
response.addHeader("Content-type","text/plain")
renderResponse("ガッ")
}
case e : AzunyanException => {
response.setStatus(400)
response.addHeader("Content-type","text/plain")
renderResponse("ペロペロ")
}
}
}

0 件のコメント:

コメントを投稿