チケット #514 (closed 新機能・拡張: fixed)

登録: 12 年 前

最終更新: 12 年 前

インタプリタモードでJavaの例外が発生した際、JSソースのエラー箇所をスタックトレースに含ませる

報告者: shinomiya 担当者: shinomiya
優先度: major マイルストーン: 0.1.2
コンポーネント: im-jssp バージョン: 0.1.2
キーワード: 関係者:

チケットの概要

  • インタプリタモードの場合、 JSからJavaを呼び、そのJava内で例外が発生しても、 JSソースのエラー箇所(ソース名&行数)が表示されない。
    • JSソースのエラー箇所をスタックトレースに含ませるように修正する。

原因

Rhino 1.6R2 のWrappedException?に関して

  • Rhino 1.6R2 は、JSから呼び出されたJava内で例外が発生した際、Javaの例外をラップしたWrappedException?をスローする。
    • WrappedException?内には、JSソースのエラー箇所(ソース名&行数)が格納されている。
      • 具体的には、Interperter#getPatchedStack(RhinoException, String)内で、インタプリタモード時にエラーが発生したJSソース情報を生成している。
        ●呼び出し階層
        Interperter#getPatchedStack(RhinoException, String)
         |
         +-- RhinoException#generateStackTrace()
        	  |
        	  +-- RhinoException#printStackTrace(PrintStream s)
        		   |
        		   +-- Throwable#printStackTrace()
        
    • このWrappedException?を上にスローしなければ、エラー箇所(ソース名&行数)が上に伝わらないのは当たり前。。。

修正ソース

チケットの履歴

2007/12/27 16:43:21 更新者:shinomiya

  • ステータスnew から closed に更新されました。
  • 解決方法fixed に更新されました。

修正しました。[154]
本件の修正にあわせて、例外表示用のJSPも作成しました。 [155]