0

このコードを参照してください:

 try
    {
        int val = GenericLibrary.ConvertToInt(userInput);
        return "Valid number";
    }
    catch (Exception)
    {
        return "Invalid number";
    }

多くのtrycatchブロックを持つコンソール アプリケーションを作成しています 。よりクリーンな方法で例外を処理し、DRY の原則に従いたいと考えています。

コンソールアプリケーションc#でエラーを処理する最良の方法は何ですか?

Func または Action を使用できますか?

アスペクト指向プログラミングを使用できますか?

4

3 に答える 3

4

明確に、より明確にしたい- エラー処理コードを 1 か所だけに書きたい場合は、AOP (PostSharp など) を使用できますただし、AOP を介したエラー ハンドラーを使用すると、exe のあらゆる場所でコンパイルされることに注意してください。

また、これは、例外ハンドラを例外的に使用する必要があるという規則に反することにも注意してください。

Try-Catch でstringキャストを anにラップする理由がわかりません。int

グローバル例外ハンドラApplication.ThreadExceptionAppDomain.CurrentDomain.UnhandledException. 文字列から int へのキャストなど、予想されるすべての例外を処理することを忘れないでください。

このキャストには Func を使用できますが、単純なメソッドを使用すると簡単になりますInteger.TryParse

于 2013-07-21T05:06:02.213 に答える
0

Func を使用したい場合は、これを参照してください: You can use this

public static class SafeExecutor
{
    public static T Execute<T>(Func<T> operation)
    {
        try
        {
            return operation();
        }
        catch (Exception ex)
        {
            // Log Exception
        }
        return default(T);
    }
}

var data = SafeExecutor.Execute<string>(() =>
{
    // do something
    return "result";
});
于 2013-07-21T05:03:17.987 に答える