2009-07-18 1 views
2

アプリケーションでは、例外のメッセージテキストを比較することがあります。たとえば、例外:メッセージプロパティを比較してメッセージの意味を把握していますか?

ex.Message.Contains("String or binary data would be truncated") 

の場合、メッセージボックスが表示されます。

これは、英語のWindowsシステムでテストする場合に機能します。しかし、プログラムが異なる言語セットのシステムで実行されている場合、これは動作しません。英語の例外メッセージのみを使用する方法

答えて

6

orsogufoが指摘したように、あなたは、例外の種類またはエラーコードを確認していない、と決して(メッセージがないプログラムのために、ユーザーのためである)例外メッセージを解析してみてください。あなたの具体的な例では

は、あなたのような何かを行うことができ

try { 
    ... 
} 
catch (SqlException ex) 
{ 
    if (ex.Number == 8152) MessageBox.Show(ex.Message); 
} 

(あなたはをチェックするために、正確なエラー番号(複数可)を決定する必要があります。)

+0

現在、私の番号は8152、207や良い点だ2627 – Jeffrey

7

例外メッセージが英語であることを保証することはできません。コントロールの背後にあるシステム設定に依存します。一般的に

、あなたは例外メッセージを解析するのではなく、例外種類と(言語に依存している)、もし存在するならば、エラーコードに頼るべきではありません。一例として、代わりに一つだけ例外タイプをキャッチし、メッセージを解析する

...

try { 
    do_something(); 
} catch (Exception exc) { 
    if (exc.Message.Contains("String or binary data would be truncated"){ 
     MessageBox.Show("An error occurred..."); 
    } 
} 

...あなたは複数の例外ハンドラを使用する場合があります:

try { 
    do_something(); 
} catch (SqlException sql) { 
    MessageBox.Show("An error occurred..."); 
} catch (SomeOtherException someExc){ 
    // exception-specific code here... 
} catch (Exception exc) { 
    // most generic error... 
} 
3

決してメッセージを解析し人間によって読まれるように設計されています。

彼らは何を間違った文法、次のリリースを得た場合、彼らはそれを変更することは

彼らは文法が間違って、彼らはそれを変更する次のリリースを得た場合どのような。

彼らは文法が間違っていました、そして、彼らはそれを次のリリースを変更した場合は?

+0

されている;) – Jeffrey

+0

はdownvoterケアを説明するだろうか? –

関連する問題