C#在抛出一个异常后没有抛出异常的try语句中会发生什么

jkl*_*dgs -3 c#

所以,如果我有这样的事情:

try
{
    variable =  Image.FromFile("Image1");
    variable2 = Image.FromFile("Image2");
    variable3 = Image.FromFile("Image3");
}
catch (Exception e) { }
Run Code Online (Sandbox Code Playgroud)

如果第二行抛出异常会发生什么?变量1是否正确分配而不是2或3?或者它会在处理异常后尝试做3吗?

Ric*_*der 5

由于所有变量都是try块的本地(作用域),因此无关紧要,因为您无法访问块外的任何变量.

Exception遇到一个控件被转移到最内层时catch,没有办法忽略它并继续下一个语句.

更新

随着你的变化,如果第二次FromFile投掷,那么variable将有一个Image.变量2/3将看不到变化(因此很可能为空).

  • @Asourcious根据你的编辑,是的,`variable`将拥有图像,即使`variable2`会抛出异常.这确实是你可以在2秒内测试的东西. (2认同)