特定のSQL Serverエラーがスローされた場合、そのコードを無視して実行することができるキャッチを作成しました。同僚は、私が抱えているエラーメッセージはSQLから投げ捨てられており、2008年にアップグレードすると変更される可能性があると述べました。彼は私のソリューションは今日は機能すると言いましたが、それは弱い解決策です。だから、私の質問は... SQL Serverのバージョンに依存している可能性がある場合は、SQL Serverからスローされたエラーをどのように捕捉して処理するべきですか?すなわち(2005年、2008年またはそれ以降)?どのようにキャッチをより良くするためのアイデアですか?SQL Serverのアップグレードで変更される可能性のあるSQLエラーをキャッチする方法
私のコード
コメントで述べたようにstring sqlError = "The INSERT statement conflicted with the FOREIGN KEY constraint Table1. The conflict occurred in database Work1, table Table2.";
catch (Exception oExp)
{
//This check will allow the specific error to continue without getting caught.
if (oExp.Message.Contains(Constants.sqlError) == false)
{
throw oExp;
}
}
なぜ最初にエラーがスローされますか。私はそれを解決しようとします。 –
合意 - これは避けることができるエラーです - その可能性を避けるために措置をとってください。 –
と 'throw oExp;'単に 'throw;'を実行しないと、私は思ったスタックトレースを失うでしょう。 –