###前提・実現したいこと
あるシステムから、正規表現をDB(postgresql)に保存する際、
その正規表現が正しいか、「試しにオブジェクトを生成し、例外を吐くか」で見ています。
例外が出なければ保存、出た場合はエラーメッセージを表示し、再度入力を促します。
###発生している問題・エラーメッセージ
"["や"("・"+"・"?"のみを保存しようとすると、ArgumentExceptionを吐くのですが、
"{"や"]"のみは何も吐かれず、保存出来ているのが現状です。
正直なところ、例外を吐かないのだからそのまま進めてしまっても、システム的には特に問題はないのですが、
"["はNGで、"]"はOKってどういう基準?と思い、以下を質問させていただきます。
- 「[」や「(」は例外を吐くのに、「{」や「]」は例外を吐かないのは理由がありますか?
- 回避する(エラーが出るようにする)スマートな実装がありますか?
お知恵をお貸しいただければ幸いです。
###該当のソースコード
C#
1private bool CheckErrors() 2{ 3 // 一部省略 4 try 5 { 6 Regex judgementRegex = new Regex(judgementRegexp); 7 } 8 catch (ArgumentException e) 9 { 10 // e.Massageを用いて画面・ログにメッセージを出力。実装済みです。 11 return false; 12 } 13 // DB保存、他の入力項目のエラーチェック等。実装済みです。 14 return true; 15}
###試したこと(調べたこと)
- 「[」や「(」は例外を吐くのに、「{」や「]」は例外を吐かないのは理由がありますか?
→Microsoftのリファレンスを読みましたが、見つかりませんでした。
「正規表現の解析エラーが発生した」時にArgumentExceptionを吐くようですが、
「そもそも何を以て解析エラーとしているか」を知ることが出来ませんでした。
- これを回避するスマートな方法がありますか?
→入力文字列に"]"があり、その前方に"["が無ければエラーを出す、等を1つずつ見ていく。解析エラーの条件が分かれば、1つずつ根性で見ていこうとは思ったのですが…。そうするしかない?
→そもそも、例外を見る、なんてそんなことは普通しない…?
###補足情報(言語/FW/ツール等のバージョンなど)
C#
.NET Framework 4.5.1
Postgresql

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/22 04:14
2017/12/22 04:32
2017/12/22 04:45
2017/12/22 04:51
2017/12/22 05:18
2017/12/22 05:53