请考虑以下功能。我已经用C#编写了。
public void Test()
{
statement1;
try
{
statement2;
}
catch (Exception)
{
//Exception caught
}
}
仅当statement1
没有引起异常时,我才想执行statement2
。仅在statement1
不引发任何异常时才可以执行statement2
吗?
答案 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
}