【发布时间】:2013-12-10 01:00:38
【问题描述】:
为了减少冗余代码,我有一些 throw 辅助方法:
protected static X ThrowInvalidOperation(string operation, X a, X b) {
throw new InvalidOperationException("Invalid operation: " + a.type.ToString() + " " + operation + " " + b.type.ToString());
}
用法:
public static X operator +(X a, X b) {
if (...) {
return new X(...);
}
return ThrowInvalidOperation("+", a, b);
}
问题:因为运算符+ 必须始终返回一个值,我通过使ThrowInvalidOperation 返回一个值并使用return@ 调用它来解决这个问题987654326@
有很多缺点 - 一个是因为我不能从返回不同类型的方法中调用它。
我希望有一种方法可以将辅助函数标记为“总是抛出异常”,这样编译器就会停止跟踪返回值。
问:我需要哪些可能性才能完成这项工作?
【问题讨论】:
-
您是否考虑过在帮助程序中创建异常,同时将其抛出到运算符实现中?例如。
throw NewInvalidOperationException(...);
标签: c# exception exception-handling helper throw