为什么在以下情况下c#编译器不够智能?
void ThrowEx() {
throw new Exception();
}
int Test() {
ThrowEx();
}
... Test()':并非所有代码路径都返回值
编辑:在实践中,我想将异常抛出逻辑提取到单独的方法中,因为我已经厌倦了键入
throw new FaultException<MyCustomFault>(new MyCustomFault(), "cannot validate the input");
之类的东西 最佳答案
它不会在方法之间切换;尤其重要的是,该方法可能位于不同的程序集中,并且可以在不进行重建的情况下进行更改,或者可以是虚拟的,外部的,抽象的或部分的-仅会发现少量情况会造成混淆。
您可以让ThrowEx返回“ int”,然后:
return ThrowEx();
这会使编译器高兴。或使用泛型:
static T ThrowEx<T>() {...}
...
return ThrowEx<int>();