我想创建一系列错误,每个错误都特定于它自己的类和模块。然后我想将 ID 附加到异常中,以便当我的消息更改时 ID 仍然保持不变。我如何创建此错误列表而无需维护一个大型全局枚举?
将无符号32位十六进制数范围分层:
0xMMCCCEEE
其中:
因此,您可以拥有0到0xFF(256)个模块,每个类和错误都可以拥有0到0xFFF(4096),您只需要确保每个错误对其类别唯一,每个类别对其模块唯一,这样就不必将所有错误消息保存在单个巨大的表中。
例如:
0x0401D00A
Guid.CreateGuid();
认为每个可能的“错误”都可以在“错误空间”中被分配一个点是一种天真的想法。考虑一个简单的例子,一个方法抛出一个特定的错误(我会礼貌地说“抛出”,尽管在上下文中,它曾经是“返回”):
public void MyMethod() {
// ...
throw new ErrorException(ErrorCodes.MyMethodError1); // Or something
}