有什么办法告诉C#编译器一个函数永远不会返回?我遇到了以下问题。这是简单的简化版本。指定函数不返回在C#
public int myMethod()
{
try
{
return anythingHere();
}
catch
{
Environment.Exit(1); //or a function which always either calls Environment.Exit or throws an exception
}
}
'package.class.myMethod()'不是所有的代码路径都返回一个值。
如果不是,有没有一种通用的方法来框架这种事情,而不是插入无法访问的代码?在退出之后有一个'返回0'或者其他一些对我来说似乎很荒谬。据我所知,没有办法可以从Environment.Exit调用返回函数,所以如果该分支被采用则不需要返回值(如果它抛出异常,该函数仍然不需要返回值)。
编辑:
也许这样的事?
public T MyExit<T>()
{
Environment.Exit(1);
return default(T);
}
虽然还不完全令人满意。
我实在不明白的危害在把回报的,如果它永远不会得到点击,希望编译器看到,但这可能是在编译 –
优化通过耶稣和SLak的都是正确的,但我担心的是,如果这是一个问题,你试图通过这种方式来解决,也许它的你的架构需要一点反思。一种设计用于返回事物的方法应该总是返回一些东西如果没有,那么我认为你的退出逻辑在错误的地方......如果你明白我的意思。最上面的来电者应该决定是否需要退出。不是函数调用。 –
@RussC值得关注。在我的特殊情况下,执行catch块是一个不可恢复的错误,我想要注意,但最终会退出程序。 – Lucina