[Seasar-user:16604] Re: ThrowsInterceptor で例外発生箇所を特定するには

黒川博之 [E-MAIL ADDRESS DELETED]
2009年 1月 7日 (水) 14:58:07 JST


海野様

> ちなみに、こちらではTeedaでPageクラスの
> do*,initialize,prerenderメソッドに対して仕掛けていますが、
> Pageから呼んだServiceで例外が発生した場合
> そのServiceのクラス名とメソッド名が取れています。
Teedaはそうなっているんですか??

とりあえず、ひが様から頂いたアドバイスを元に色々と考えてみます。

ありがとうございました。


----- Original Message ----- 
From: <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, January 07, 2009 12:00 PM
Subject: [Seasar-user:16599] Re: ThrowsInterceptor で例外発生箇所を特定するには


> あらら、そうですか。。
>
> ちなみに、こちらではTeedaでPageクラスの
> do*,initialize,prerenderメソッドに対して仕掛けていますが、
> Pageから呼んだServiceで例外が発生した場合
> そのServiceのクラス名とメソッド名が取れています。
>
> 海野
>
>
>> 海野様
>>
>>>    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 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 メーリングリストの案内