0

ここで try catch 関数を使用するにはどうすればよいですか?

public DataTable BindRole()
{  
    Database _database = DatabaseFactory.CreateDatabase();
    DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
    DataSet _ds = _database.ExecuteDataSet(dbCommand);
    return _ds.Tables[0];      
}

ありがとう。

4

6 に答える 6

1

関数が任意の値を返す場合、例外をキャッチした後、以下に示すように役立つ null を返します。

public DataTable BindRole()
{
   try
   {
       Database _database = DatabaseFactory.CreateDatabase();
       DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
       DataSet _ds = _database.ExecuteDataSet(dbCommand);
       return _ds.Tables[0];
   }
   catch
   {
       return null;
   }
}

今、この方法を使用するとき。

Datatable resultantTable = BindRole();
if ( resultantTable != null )
{
     // Do what you want with this datatable
}
于 2013-09-25T06:47:39.277 に答える
0

「throw」または「return null」を使用するか、新しい空のオブジェクトを返します。catchblock で例外を正しく処理することを除いて (fe log it)、throw をお勧めします。例外をキャッチして再スローしないでください (理由がない限り)。

catch (Exception error) { throw error;} 

この場合、元のスタックトレースが失われます。

public DataTable BindRole()
 {
   try
    {
       Database _database = DatabaseFactory.CreateDatabase();
       DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
       DataSet _ds = _database.ExecuteDataSet(dbCommand);
       return _ds.Tables[0];
    }
   catch
    {
       throw;
    }
}
于 2013-09-25T06:28:58.043 に答える
0

あなたの質問はかなり漠然としています。すべてを TryCatch でラップするだけです。または、必要に応じて個々のコマンド。

または、コマンドの 1 つにエラーがあった場合にクリーンアップするために catch で何をすべきかを尋ねていますか?

エラーをキャッチする以外に、何を達成しようとしているのかについてのヒントを教えてください (これは、ブロック全体に try/catch を配置することで実行できます)。

于 2013-09-25T06:30:10.860 に答える