自己的异常 class 构造函数
Own exception class constructors
在文章 "Best Practices for Exceptions" (http://msdn.microsoft.com/en-us/library/seyhszts(v=vs.110).aspx) 中,我发现了以下条款:
In C# and C++, use at least the three common constructors when
creating your own exception classes: the default constructor, a
constructor that takes a string message, and a constructor that takes
a string message and an inner exception.
为什么一定要定义这三个公共构造函数?如果没有额外的自定义属性,我的异常 class 是无用的,我应该在我的异常 class 构造函数中将它们的值作为参数传递。
您应该定义这些构造函数,因为大多数开发人员都希望它们在那里。有一些模式,如包装异常,只有在您可以指定内部异常时才能完成。这些最佳实践确保您始终可以使用这些模式。例如:
try { ... }
catch (Exception ex)
{
throw new MyBusinessException(ex);
}
另一方面,这不是必须的。如果您的异常从一组参数构建自己的消息,那么让用户更改它是没有意义的。
在文章 "Best Practices for Exceptions" (http://msdn.microsoft.com/en-us/library/seyhszts(v=vs.110).aspx) 中,我发现了以下条款:
In C# and C++, use at least the three common constructors when creating your own exception classes: the default constructor, a constructor that takes a string message, and a constructor that takes a string message and an inner exception.
为什么一定要定义这三个公共构造函数?如果没有额外的自定义属性,我的异常 class 是无用的,我应该在我的异常 class 构造函数中将它们的值作为参数传递。
您应该定义这些构造函数,因为大多数开发人员都希望它们在那里。有一些模式,如包装异常,只有在您可以指定内部异常时才能完成。这些最佳实践确保您始终可以使用这些模式。例如:
try { ... }
catch (Exception ex)
{
throw new MyBusinessException(ex);
}
另一方面,这不是必须的。如果您的异常从一组参数构建自己的消息,那么让用户更改它是没有意义的。