可以有一个专门用于异常处理的类c#

时间:2016-08-18 13:55:02

标签: c# exception-handling

我正在VS2015中开发一个Windows应用程序 我的查询是关于处理系统定义的异常的两种可能方法: - 尽可能使用try块并处理它 - 定义一个异常类并记下所有可能的异常(我只关注系统定义的异常,如File Not Found,Null Reference),并在其他类中继承该类,这些类自动处理异常。 任何人都可以建议我哪种方法更好,如果第二种方法更好,如何实现和使用它。我的类已经从Form继承。那我需要一个界面吗?如果是这样我可以实现这些方法? 任何帮助表示赞赏! 提前谢谢。

1 个答案:

答案 0 :(得分:1)

方法2是可能的。如果你总是期望同样的例外,我会推荐它。

如果被调用的方法可以抛出非常具体的异常,那么最好在它们被抛出的位置附近处理它们。

您可以定义一个包装器方法来捕获这样的异常:

public bool TryExecuteServiceAction(Action a) {

    if (a == null) {
        throw new ArgumentNullException("a");
    }

    try {
        a();
        return true;
    }
    catch (SecurityAccessDeniedException sade) {
        Logger.Error(sade);
        return false;
    }
}

通过返回包含错误代码,消息等的ResultObject来扩展此模式,而不是返回bool

像这样使用包装

DoSomethingDto serviceResult = null;
var success = TryExecuteServiceAction(() => serviceResult = _service.DoSomething(command));
if (success) {
    // we know that the service call was successful and the DTO has data
    // work with DTO ...
}
else {
    // e.g. show generic error message to user
}