[Seasar-user:16597] Re: ThrowsInterceptor で例外発生箇所を特定するには
黒川博之
[E-MAIL ADDRESS DELETED]
2009年 1月 7日 (水) 11:48:51 JST
海野様
> StackTraceElement err = e.getStackTrace()[0];
> err.getClassName();
> err.getMethodName();
System.out.println(err.getClassName());
System.out.println(err.getMethodName());
すると、これらが出力されました。
org.seasar.framework.util.PreparedStatementUtil
executeUpdate
フレームワークのクラス/メソッドのようですね。
----- Original Message -----
From: <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, January 07, 2009 11:39 AM
Subject: [Seasar-user:16595] Re: ThrowsInterceptor で例外発生箇所を特定するには
> 海野です。
>
> もう1つだけ思いついたので、、
>
> public void handleThrowable(RuntimeException e, MethodInvocation
> invocation) throws Throwable {
>
> メソッド内で
>
> StackTraceElement err = e.getStackTrace()[0];
> err.getClassName();
> err.getMethodName();
>
> というのはどうでしょうか。
>
>
>> ひがです。
>>>
>>> 返答ありがとうございます。
>>>
>>> >getTargetClass(invocation).getName()
>>> >invocation.getMethod().getName()
>>> これだと、ThrowsInterceptorが適用されているactionクラス名とメソッド名
>>> が取得されてしまうようです。
>>>
>>> 独自例外を定義して、そのクラスにクラス名とメソッド名のプロパティを
>>> Stringで持たせて、catch句でクラス名とメソッド名をセットするしか
>>> 無いですかね。。。
>>> *そうなると、全ての箇所にtry catchを書く必要があるから、AOPの威力が魅力が落ちそうな予感。。。
>>>
>> ServiceのすべてのメソッドにInterceptorをしかけて、
>> そこでThreadLocalにクラス名とメソッド名を格納し、
>> ThrowsInterceptorで取り出すという方法もあります。
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内