[Seasar-user:484] Re: 例外の出方の改善案

B isid.co.jp Yasuo Higa higa
2004年 3月 18日 (木) 18:33:05 JST


<[E-MAIL ADDRESS DELETED]> の、
   "[Seasar-user:481] 例外の出方の改善案" において、
   "Masataka Kurihara <[E-MAIL ADDRESS DELETED]>"さんは書きました:

ひがです。

> 栗原です。
> EA3でXML設定を利用していろいろテストしてみました。以下、まとめきって
> ませんが五月雨にエラーパターンと対応案をあげてあります。動き的な仕様
> の問題は、最後の13)だけで、あとは例外の出方の改善案です。思いつく
> パターンを列挙する中、「これはOK。」もあります。半分はすでにOKですね。
> 
> ----------------------------------------------------------------------------
> 1)String型の引数がひとつあるコンストラクタを持つクラスで、<arg>設定が一つ
>     もなかったとき
> org.seasar.framework.exception.lang.NoSuchMethodRuntimeException:
> [ESSR0057]クラス(org.seasar.extention.SpeakerImpl)のメソッド(<<init>>())
> が見つかりません
> at org.seasar.framework.util.reflect.ClassUtil.getConstructor
> (ClassUtil.java:86)
> 
> #NoSuchMethodRuntimeException ではなくNoSuchConstructorRuntimeException 新設?
> #メッセージで「<<init>>」ではなく、クラス名を入れてほしい。
> 
らじゃ。
Javaのコンストラクタのメソッド名前って、たしか<<init>>だったと
思ったけど。分かりやすいほうが良いと思います。

> 4)プロパティで初期化するときにname属性に無いプロパティを指定したとき
> java.lang.NullPointerException
> at org.seasar.framework.container.assembler.property.
> ManualPropertyAssembler.assemble(ManualPropertyAssembler.java:46)
> 
> #PropertyNotFoundRuntimeException 新設?
> #メッセージで、その設定をミスしたnameを表示してほしい。
> 
らじゃ。
> 
> 
> 5)int 型のプロパティに数値に変換できない文字列を渡したとき
> java.lang.NumberFormatException: For input string: "kurihara"
> at java.lang.NumberFormatException.forInputString(Unknown Source)
> at java.lang.Integer.parseInt(Unknown Source)
> at java.lang.Integer.<init>(Unknown Source)
> at org.seasar.framework.util.conversion.IntegerConversionUtil.toInteger
> (IntegerConversionUtil.java:22)
> 
> #IllegalPropertyValueRuntimeException 新設?
> #メッセージで設定しようとしたコンポーネント名・プロパティ名と値文字列
>   を表示してほしい。
> 
らじゃ。
> 
> 
> 7)int型の引数をひとつもつinitMethodにString型の引数を渡したとき
> java.lang.NumberFormatException: For input string: "kuri"
> at java.lang.NumberFormatException.forInputString(Unknown Source)
> at java.lang.Integer.parseInt(Unknown Source)
> at java.lang.Integer.<init>(Unknown Source)
> at org.seasar.framework.util.conversion.IntegerConversionUtil.toInteger
> (IntegerConversionUtil.java:22)
> 
> #IllegalMethodArgumentRuntimeException 新設?
> #メッセージでコンポーネント名・呼び出そうとしたメソッド名・値文字列
>   を表示してほしい。
> 
らじゃ。
> 
> 9)Aspect設定で、指定したコンポーネント名が間違っていたとき
> org.seasar.framework.container.ComponentNotFoundRuntimeException:
> [ESSR0046]コンポーネント(testAdvic)が見つかりません
> at org.seasar.framework.container.impl.S2ContainerImpl.getComponentDef0
> (S2ContainerImpl.java:114)
> 
> #AroundAdviceNotFoundRuntimeException 新設のほうが易しいか?
> #適用しようとしたコンポーネントおよび設定文字列の表示をしてほしい。
> 
これは、このままでいい気がします。
適用しようとしたAdviceのクラスは、Aspect側からは分からないので。
> 
> 13)<arg>なしのAUTOモードで動かしながら、プロパティをセットしたとき
> org.seasar.framework.exception.lang.NoSuchMethodRuntimeException:
> [ESSR0057]クラス(org.seasar.extention.SpeakerManagerImpl)のメソッド
> (<<init>>())が見つかりません
> at org.seasar.framework.util.reflect.ClassUtil.getConstructor
> (ClassUtil.java:86)
> 
うごくはずですけど。
test.org.seasar.framework.container.deployer.SingletonComponentDeployerTest
#testDeployAutoManualProperty
---
Yasuo Higa <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.



Seasar-user メーリングリストの案内