代码在try块内执行良好,但如果try不存在,则会失败

本文关键字:try 如果 不存在 失败 执行 代码 | 更新日期: 2023-09-27 18:25:17

我有代码:

try
{
    IUIItem menuItem = menu.Get(SearchCriteria.ByText(criteria));
    menuItem.Click();
}

它只有在try块部分时才成功(没有例外)。如果省略了try块(没有try),它确实会抛出一个exeception。这在我看来是不可能的,但事实就是这样。为什么?

代码在try块内执行良好,但如果try不存在,则会失败

您需要查找try-catch的定义。当您有一个try-catch时,异常仍然被抛出,但try-catch会处理它,这样您的代码就可以继续运行。如果没有try-catch,程序就会中断,因为没有任何东西可以处理它。

如果没有catch语句,此代码将无法编译。如果你有:

try
{
    IUIItem menuItem = menu.Get(SearchCriteria.ByText(criteria));
    menuItem.Click();
}
catch (Exception ex)
{
}

代码将编译并抛出一个被捕获的异常,但没有对其执行任何操作,因此您不会注意到任何事情。

如果添加:

catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    throw ex;
}

您将把异常消息写入控制台,然后重新抛出(转发)异常。