Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

rjbでの例外処理

動機

Rubyの例外構文でJavaの例外を処理したい

サンプル

integer = Rjb::import('java.lang.Integer')
begin
  n = integer.parseInt('Not Numerical Expression')
rescue NumberFormatException => e
  n = -1
end

実装方法

rjb内でJavaの例外を検出した場合、例外クラスの名前(ただしパッケージ名は削除する)を利用して、StandardErrorクラスを継承したクラスを作成する。

次に、そのクラスを指定してrb_raiseを実行する。

バージョン

rjb-0.1.2以降でサポート

制限事項とTODO

  • 異なるパッケージで同一名称の例外クラスがあれば後書きする。
  • 0.1.2ではJavaの例外クラス固有のメソッド/フィールドの実装までは行わない(例:SQLExceptionのSQLException#getErrorCode)。実装は予定している。
  • JVM内のスタックトレースは保持していない。JVM内のスタックトレースを参照したい場合には$verboseをtrueにする(あるいはrubyの引数として-vを与える)。
Last modified:2011/07/25 00:02:25
Keyword(s):
References:[RubyJavaブリッヂ]