如果没有异常,是否可以有条件地执行一条语句?

时间:2018-09-12 06:08:29

标签: c# .net exception try-catch

请考虑以下功能。我已经用C#编写了。

public void Test()
{
    statement1;
    try
    {
        statement2;
    }
    catch (Exception)
    {
        //Exception caught
    }
}

仅当statement1没有引起异常时,我才想执行statement2。仅在statement1不引发任何异常时才可以执行statement2吗?

5 个答案:

答案 0 :(得分:4)

是的,您可以通过这种方式轻松完成

public void Test()
{
    try
    {
        statement2;
        statement1;
    }
    catch (Exception)
    {
        //Exception caught
    }
}
如果statement2抛出某些异常,则

statement1将不会运行。

另一种不太酷的方法是使用变量

public void Test()
    {
        bool completed=false;
        try
        {
            statement2;
            completed=true;
        }
        catch (Exception)
        {
            //Exception caught
        }
        if (completed)
          statement1;
    }

答案 1 :(得分:3)

更改语句的顺序和逻辑。您无法在运行时预见到异常

答案 2 :(得分:3)

如果我正确理解了您的问题,这就是您想要的(将statement1;下的statement2;移动):

try
{
    statement2;
    statement1;
}
catch (Exception)
{
    //Exception caught
}

通过这种方式,statement1仅在statement2没有引起异常的情况下才会执行!

答案 3 :(得分:2)

是的,您所要做的就是将语句1移动到语句2下,因为只有在语句2没有引发任何异常的情况下,编译器才会到达语句1。下面的代码:

 public void Test()
{
try
{
    statement2;
    statement1;
}
catch (Exception)
{
    //Exception caught
}
}

答案 4 :(得分:1)

是的,您实际上正在使用它(但错误)。

try...catch块旨在捕获异常并采取适当的操作,无论是否引发异常:

try
{
    // risky operation that might throw exception
    RiskyOperation();
    // here code is executed when no exception is thrown
}
catch(Exception ex)
{
    // code here gets executed when exception is thrown
}
finally
{
    // this code evaluates independently of exception occuring or not
}

总结起来,您需要做:

try
{
    statement2;
    statement1;
}
catch(Exception ex)
{
    // code here gets executed when exception is thrown
}