dポイントプレゼントキャンペーン実施中!

はじめまして。現在.Net でソフトウェアの開発をしています。
さっそくですが質問させていただきます。

例えばRegexクラスのコンストラクタで、正しくない正規表現パターンを入力すると
ArgumentException が発生します。
この例外メッセージを変更したいのですがどうしたら良いでしょうか。

具体的に説明しますと、「(((」という文字をコンストラクタに渡すと、
「解析中 "(((" - ) が足りません。」という例外メッセージが表示されます。
また、「)))」という文字をコンストラクタに渡すと、
「解析中 ")))" - )' が多すぎます。」となります。

この例外メッセージを変更したいのですが、例えば
「解析中 "(((" - ) が足りません。」というメッセージであれば「"("に対する")"が見つかりません。」に、
「解析中 ")))" - )' が多すぎます。」というメッセージならば「"("の数に対して")"が多すぎます。」とかに変更したいとします。
例外メッセージごとに細かく分岐処理するにはどうしたら良いでしょうか?(質問1)
(メッセージ中に「解析中 足りません。」が含まれてたら用意したメッセージに変更する とかは出来そうですが・・・他に解決策は?)

また、Regexコンストラクタから発生するArgumentExceptionの例外メッセージを全て知る方法はあるのですか?(質問2)
(Regexに限らず、色々なクラスのメンバが持つ例外のメッセージ一覧は知ることが可能なものなのでしょうか?)

加えて、メッセージを特定する固有のエラーコードのようなものは存在しないのでしょうか?(質問3)

以上3点、どなたか分かる範囲がありましたら、ご回答よろしくお願いいたします。

A 回答 (1件)

直接の回答じゃないけど、多分何もしないのが正解に思えます。


.Net Frameworkの既定のメッセージのままのほうが、解決策を見つけ出しやすいでしょうし(googleの検索などでひっかかってくれるとか)。

質問2、3は.Net Frameworkのソースをみるとか、アッセンブリやメッセージリソースを解析するとかしないとわからないと思います。
なので、質問1についても、例外のMessageを読んですり替えるしかないと思います。
それか、鬼車など別の正規表現ライブラリを独自に組み込んで、正規表現パーザの処理にたちいってエラーを吐くようにすれば、なんとかなるかも。
    • good
    • 0
この回答へのお礼

> .Net Frameworkの既定のメッセージのままのほうが、解決策を見つけ出しやすいでしょうし(googleの検索などでひっかかってくれるとか)。

エラーメッセージの中にソフトウェアの使用者に見せたくないものがありましたので、
悩んでいました。

質問2、3は一般的に出来ることでは無いんですね・・・。
勉強になりました。

結局のところ、今回はエラーメッセージに特定のワードが含まれていたらリプレースするという強引な方法を採ることにしました。

それにしても、別の正規表現ライブラリを独自に読むっていうのは良いアイデアですね。
今後の教訓になりそうです。ご回答ありがとうございました。

お礼日時:2011/08/28 07:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!