抛出异常后我需要返回(c ++和c#)

man*_*ans 33 c# c++ exception

我有一个生成异常的函数.例如,以下代码:

void test()
{
    ifstream test("c:/afile.txt");
    if(!test)
    { 
         throw exception("can not open file");
    }
    // other section of code that reads from file.
}
Run Code Online (Sandbox Code Playgroud)

抛出异常后我需要返回吗?

c#是什么情况?

Aas*_*set 48

throw通常会导致函数立即终止,所以即使你在它之后放置任何代码(在同一个块内),它也不会执行.这适用于C++和C#.但是,如果在try块中抛出异常并且异常被捕获,则执行将在适当的catch块中继续,如果存在finally块(仅限C#),则将执行是否抛出异常.无论如何,紧随其后的任何代码throw都将永远不会被执行.

(请注意,throw直接在try/ 内部catch通常是一个设计问题 - 异常是针对函数之间的冒泡错误而设计的,而不是函数中的错误处理.)