什么时候使用ThrowHelper方法而不是直接投掷?
void MyMethod() {
...
//throw new ArgumentNullException("paramName");
ThrowArgumentNullException("paramName");
...
}
void ThrowArgumentNullException(string paramName) {
throw new ArgumentNullException(paramName);
}
Run Code Online (Sandbox Code Playgroud)
我已经读过调用一个ThrowHelper方法(一个抛出异常的唯一方法)而不是直接抛出应该产生更小的字节码.
这个以及明显的封装(另一层间接)可能是不直接抛出的好理由,至少在某些情况下是这样.
无论如何,IMO的缺点也不是没有实质性的.
我有限的经验是整体设计经常变得更糟.
int MyMethod(int i) {
switch (i) {
case 1:
return 1;
default:
ThrowMyException();
}
return 0; // Unreachable (but needed) code
}
Run Code Online (Sandbox Code Playgroud)
这可能部分是个人品味的问题.无论如何,你对这个问题有什么个人指导?您是否发现将ThrowHelpers用于所有常见任务(如方法参数验证(ThrowArgumentNullException(paramName)等)是个好主意?我在这个问题上遗漏了哪些明显的东西?
顺便说一下,我试图不将此问题与验证问题混在一起,例如:
ThrowIfNameIsNullOrEmpty(name);
Run Code Online (Sandbox Code Playgroud)