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