【发布时间】:2015-11-19 13:50:15
【问题描述】:
为什么总是接受异常作为返回类型(抛出)?
有效示例 1:
public string foo()
{
return "Hello World!";
}
无效示例(显然):
public string foo()
{
return 8080;
}
有效示例 2:
public string foo()
{
throw new NotImplementedException("Hello Stackoveflow!");
}
我可以看到我的“Invalid Example”是“抛出”而不是“返回”异常,但是,我的方法永远不会返回该方法定义的类型。为什么我的编译器允许它编译?
【问题讨论】:
-
因为它可以告诉我们该方法永远不会正常完成。所以永远不能使用返回值。抱怨没有意义。
-
编译器只需要验证所有可能的代码路径永远不会到达最后一个右括号。有问题的方法永远不会。干得好。
-
因为是同线程抛出的。
-
@Carl 线程与它无关。
-
@GlorinOakenfoot 任务将异常返回给调用者线程,同时关闭发出异常的线程。这里没有返回异常消息的地方,所以它只是崩溃了。
标签: c# .net exception exception-handling compilation