0

簡単に言えば、このアプリケーションはかなり管理された環境であり、ユーザーは他の開発者であるため、多くのエラーを受け取ることはないと思います。

そうは言っても、エラー遅かれ早かれ発生するので、ログを記録してユーザーに警告したいだけです。情報をできる限り検証してから、A から B にファイルをコピーしようとするこの方法があります。

        try
        {
            File.Copy(source, destination, true);
            return String.Empty;
        }
        catch (Exception ex)
        {
            logOp.AddLog(ex);
            return string.Format("ERROR: {0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace);
        }

メソッドは、成功した場合は空の文字列を返し、そうでない場合は例外をログに記録し、表示のために呼び出し元のメソッドに返します。

最も詳細なメッセージ/スタック トレースが必要な場合、File.Copy がスローできる個々の例外タイプをキャッチする必要がありますか?それとも例外をキャッチするだけで機能しますか? さまざまな例外の新しいインスタンスをスローするようにハードコーディングしようとしましたが、問題ないようですが、欠落している/違反しているプログラミング原則があるかどうかはわかりませんでした

4

2 に答える 2

1

例外ハンドラーで行っているのはログ記録だけなので、いいえ、例外を取得してメッセージをログに記録するだけです。

エラーからの回復を試みる場合は、個々の例外をキャッチすると便利です。

于 2013-10-28T20:33:22.490 に答える
1

私はそれをそのままにして、基本クラスの例外をキャッチします。

logOp.AddLog(ex) で暗黙的に行うように ex.ToString() をログに記録すると、例外の実際のタイプを書き込む必要があります (これは、File.Copy メソッドがここの例外セクションでスローできるこれらの 1 つになる可能性があります) 。

そのリンクに基づいて、実際の例外の名前は、例外から回復しようとせず、ログに記録するだけであるため、十分に有益である必要があります。

于 2013-10-28T20:36:15.763 に答える