エラー処理を行うサンプルコードについて説明します。
TryからCatchステートメントで、エラー発生時のエラー処理ルーチンを指定します。Symfowareのエラーが発生した場合、SymfowareExceptionクラスをキャッチすることで、SQLSTATEやエラーメッセージなどが確認できます。SQLSTATEやエラーメッセージをキーにしてエラー処理を切り分け、その後の振る舞いを決めることが可能です。
参照
エラーメッセージの対処法は“メッセージ集”を参照してください。
Symfoware以外のエラーは、Exceptionクラスをキャッチすることでエラー情報が確認できます。Symfoware以外のエラーの対処方法は、Microsoft社のVisual Studioのマニュアルを参照してください。
本サンプルコードでは、接続文字列を間違えて入力しエラーを発生させます。発生したエラーのメッセージとSQLSTATEをWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。
アプリケーションの手順
SymfowareConnectionオブジェクトを生成します。(ConnectionStringプロパティに接続文字列を間違えて設定したとします)
TryステートメントからCatchステートメントの範囲内にエラーが発生する可能性のあるコードを記述します。
SymfowareConnection.Openメソッドでコネクションを接続します。(パスワードを間違えて指定しエラーを発生させます)
Catchステートメントに処理したいエラーのクラスを指定します。
SymfowareException.Errors.CountプロパティでSymfowareのエラー数を取得します。
SymfowareException.Errors.MessageプロパティでSymfowareのエラーメッセージを取得します。
SymfowareException.Errors.SQLStateプロパティでSQLSTATEを取得します。
Exception.MessageプロパティでSymfoware以外のエラーメッセージを取得します。
処理がすべて行われた後に行う処理を、finallyステートメント以降に記述します。
// 1. SymfowareConnectionオブジェクトの生成(コネクション文字列を間違えて設定)
SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +
"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=XXXXXX");
string msgstr = null;
// 2. Try ~ Catchの範囲内にエラーが発生する可能性のあるコードを記述
try
{
// 3. コネクション接続(エラー発生)
con.Open();
// データ処理を記述
// コネクション切断
con.Close();
}
// 4. SymfowareExceptionクラスのキャッチ
catch (SymfowareException e1)
{
//5. Symfowareのエラー数を取得
for (int i = 0; i <= e1.Errors.Count - 1; i++)
{
//6. Symfowareのエラーメッセージを取得
msgstr += e1.Errors[i].Message + "<br>";
//7. SQLSTATEを取得
msgstr += "SQLSTATE: " + e1.Errors[i].SQLState + "<br>";
}
Label1.Text = "Symfoware Error Message<br>" + msgstr;
}
// 4. Exceptionクラスのキャッチ
catch (Exception e2)
{
//8. Symfoware以外のエラーメッセージを取得
msgstr = e2.Message;
Label1.Text = "Error Message<br>" + msgstr;
}
// Tryステートメント終了時の処理
finally
{
// オブジェクトの破棄
con.Dispose();
}