2012-04-28 8 views
3

私はストアドプロシージャを実行していて、文字列を返しています。文字列は、条件によっては10または"USER DOES NOT EXISTS"を返すように設定されています。私は悪いプログラミングの練習をキャッチしよう

次が悪いプログラミングの実践であるかどうかを知りたかっただけです。

string result = _db.GetParameterValue(cmdObj, "@strMessage").ToString(); 
try 
{ 
    int a = int.Parse(result); 
    if (a == 1) 
     Console.WriteLine("A"); 
    else 
     Console.WriteLine("B"); 
} 
catch 
{ 
    Console.WriteLine(result); 
} 

Console.WriteLine(result); 

答えて

4

あなたは、try catchブロックで、それを含まないtryParseを使用する必要があります。

int outValue = -1; 
int.TryParse(result, out outValue); 
+0

ええ、それを持っています。ありがとう。 – Rain

8

失敗したint解析をキャッチすることに基づいて、「USER NOT EXISTS」と推定するのではなく、常に一致させる方が良いです。

いつも/ catch/swallowを試すのは悪い習慣です。例外をキャッチする場合は、ログに記録するか、スローします。

あなたは言語を指定していないので、C#と仮定するとint.TryParse()int.Parseよりもはるかにきれいで、try/catchです。

+0

ありがとうrobrich。それは私が考えていた2番目の考えです。 – Rain