c# - 如果没有例外,C# 是否可以以条件执行语句?

  显示原文与译文双语对照的内容
143 1

考虑下面的函数。我在 C# 中写了。

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

仅在 statement2 不存在异常时才执行 statement1只有当 statement2 没有抛出任何异常时,才可以执行 statement1

时间:原作者:0个回答

127 3

你可以在异常之后撤回该方法,

public void Test(bool noerror= false)
{
 if (noerror)
 statement1;
 try
 {
 statement2;
 completed=true;
 }
 catch (Exception)
 {
 noerror=true;
 Test(noerror)
//Exception caught
 }
}
原作者:
149 5

是的,你可以用这种方式轻松

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;
 }
原作者:
136 0

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

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

通过这种方式,只有当 statement2 没有异常时,statement1 才会被执行 !

原作者:
138 1

是的,而且你实际上正在使用( 但错误) 。

try...catch 块用于捕获异常并采取apropriate操作,无论是否引发异常:

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
}
原作者:
87 0

你可以选择递归,但我们需要确保它不会作为无限循环结束。

public void Test()
{
 bool hasException = false;
 statement1;
 try
 {
 statement2;
 }
 catch (Exception)
 {
 hasException = true;
 }
 finally
 {
 if(hasException)
 Test();
 }
}
原作者:
...