0

私の関数では、メソッドによって返されるデータテーブルを返しています

MyDatatable(sqlQuery, connection ),

しかし、エラーをスローするいくつかの例外が生成される可能性があります

return  try {cmn.MyDatatable(qry, con)} catch(Exception ex){null};

私はこのようにしたくない

DataTable dt =null;
try{
dt = cmn.MyDatatable(qry, con);
}catch().....
return dt==null ? null :dt;
4

3 に答える 3

5

あなたの構文はかなり間違っています。次の方法で実行できます。

try
{
    return cmd.MyDatatable(qry, con);
}
catch(Exception ex)
{
    return null;
}

すべての例外を飲み込みたいとは思いませんが。

于 2012-05-16T07:50:23.530 に答える
1

IMO、最善の方法はそれを行うことです:

{
  object l_oOutDatatable = null;
  try
  {
    oOutDatable = cmd.MyDatatable(qry, con);
  }
  catch(Exception e)
  {
    log.Message(e.ToString);
  }

  return l_oOutDatatable;
}

スローされる正当な理由がなければならないため、常に例外を管理する必要があります;)。さらに、各メソッドで単一のリターンを使用することをお勧めします。

おまけに、キーワードを使用できます??。このキーワードは、null の場合に値または何かを返すことを意味します。例として:c = a ?? bこれに似ています:c = (a!=null) ? a : b;

于 2012-05-16T07:54:24.227 に答える
1

このコードを呼び出しているクライアントに例外を返す必要があります。例外を処理するのはクライアント次第です。

データベースへの接続やディスクへのファイルの書き込みなど、発生が予想される例外のみをキャッチする必要があることに注意してください。

また、データセットを取得するときに通常発生する既知の例外をキャッチするために、例外キャッチをできるだけ具体的にする必要があります。

try
{
    return cmd.MyDatatable(qry, con);
}
catch(Exception ex)
{
    //Log exeption
    Throw ex
}

これが、結果がない場合に null データテーブルを処理するための単なるチェックである場合は、それらが null であるかデータが入力されているかをテストする必要があります。空のデータテーブルを返すアプリケーション機能の一部である場合、これはより良い解決策です。

var dataTableResult = cmd.MyDatatable(qry, con);
if ( dataTableResult != null)
{
    return dataTableResult;
}

return null;
于 2012-05-16T07:56:22.883 に答える