【发布时间】:2019-01-21 08:16:59
【问题描述】:
我有一个 C# 程序,它有多个方法,具有不同的参数和不同的返回类型,但它们中的大多数都有一个具有相同异常逻辑处理的 try/catch 块。所有方法都有多个catch语句,但它们里面的逻辑对所有方法都是一样的。
有没有办法创建一个辅助方法,这样我就不会在 catch 中有重复的代码?
public static async Task<long> Method1(string requestedKey)
{
try
{
//code
return value;
}
catch (Exception1 ex)
{
Exception1Handler(ex);
}
catch (Exception2 ex)
{
Exception2Handler(ex);
}
catch (Exception3 ex)
{
Exception3Handler(ex);
}
catch (Exception ex)
{
}
return 0;
}
public static async Task<T> Method2(string key, string value)
{
try
{
//code
return value;
}
catch (Exception1 ex)
{
Exception1Handler(ex);
}
catch (Exception2 ex)
{
Exception2Handler(ex);
}
catch (Exception3 ex)
{
Exception3Handler(ex);
}
catch (Exception ex)
{
}
return default(T);
}
如何将 catch 语句分组到辅助方法中,这样我就没有重复的代码?
【问题讨论】:
-
是的。如果您要添加代码示例,我相信有人会花时间给您一个示例,说明如何做。
-
"创建一个辅助方法" 这正是你应该做的。你这样做有什么问题吗?你尝试了什么,你到底卡在哪里?
-
是 - 删除所有
try .. catch块。仅处理您想要处理的异常,如果由于用户输入而发生异常,请进行验证而不是抛出异常。否则,将它们全部捕获到顶层并向用户提供友好的消息。 -
您的代码看起来像this question 中的代码吗?如果是这样,那里的答案应该适用。如果没有,您的代码确实看起来如何的一些具体示例将非常有帮助。
标签: c# .net try-catch catch-block