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

黒川博之 [E-MAIL ADDRESS DELETED]
2009年 1月 7日 (水) 11:24:01 JST


海野様


返答ありがとうございます。

>getTargetClass(invocation).getName()
>invocation.getMethod().getName()
これだと、ThrowsInterceptorが適用されているactionクラス名とメソッド名
が取得されてしまうようです。

独自例外を定義して、そのクラスにクラス名とメソッド名のプロパティを
Stringで持たせて、catch句でクラス名とメソッド名をセットするしか
無いですかね。。。
*そうなると、全ての箇所にtry catchを書く必要があるから、AOPの威力が魅力が落ちそうな予感。。。


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




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


> 海野です。
>
> AbstractInterceptorを継承していれば
>    public Object invoke(MethodInvocation invocation) throws Throwable {
> 内で
>   getTargetClass(invocation).getName()
>>   invocation.getMethod().getName()
> でいけないでしょうか。
>
> 間違ってたらごめんなさい。
>
>
>
>> 黒川です。
>>
>> sastrutsのactionクラスのメソッドから、以下のようにserviceクラス
>> のメソッドを呼び出しています。
>>
>> @execute(validator = false)
>> public String execute() {
>>     Employee emp = new Employee();
>>     //empに値をセットするソースは省略。
>>     employeeService.insert(emp);
>> }
>>
>> このときに、org.seasar.framework.exception.SQLRuntimeExceptionが発生したとし
>> ます。
>> その直後、以下のThrowsInterceptorが実行されます。
>>
>> public void handleThrowable(SQLRuntimeException e, MethodInvocation
>> invocation) throws Throwable {
>> }
>>
>> この箇所で、実際に例外が発生したクラス名とメソッド名(EmployeeService#insert)
>> を取得したいのですが
>> seasarの機能で、このような事は可能でしょうか?
>>
>> よろしくお願いします。
>>
>> _______________________________________________
>> 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 メーリングリストの案内