将扩展方法中引发的异常传递给c#

时间:2018-11-22 14:11:13

标签: c# exception-handling try-catch throw

我为IWebElement写了一个扩展方法。

在此扩展方法内,可能会引发异常。就我而言,我不想在扩展方法中抛出异常,但是我想将其传递给调用方法。

这是我的扩展方法:

public static IWebElement FindElementByID(this IWebElement baseElement, string searchString)
{
    try
    {
        IWebElement foundElement = baseElement.FindElement(By.ID(searchString));
        return foundElement;
    }
    catch (NoSuchElementException e)
    {
        new http.HttpErrorHandler().HttpError(browser.PageSource, e.Message.ToString());
        throw new NoSuchElementException(e.Message.ToString());
    }
}

这是一些调用扩展名的示例代码:

/// <summary>
/// This function fetches paymant data from opened Loan
/// </summary>
/// <returns></returns>
public static (int payedOnTime, int payedDelay, bool lastPaymentOnTime) FetchPaymentData()
{
    browser.FindElementByID("payment-tab").Click();
    BrowserOperations.WaitUntilIDIsVisible("card-tabs-content");
    var element = browser.FindElementByID("card-tabs-content");
    BrowserOperations.WaitUntilClassNameIsVisible("loan-table");
    var table = element.FindElementByClassName("loan-table");
    /* some calculation here */
}

在其中一个呼叫中(例如,在下一行中),由于连接中断,网站关闭或其他原因,可能会发生错误。

var element = browser.FindElementByID("card-tabs-content");

我希望在方法FetchPaymentData中的上一行中引发异常,但应在扩展方法中引发该异常。

在使用throw new [...]之前,我尝试仅使用throw;获得相同的结果。关于如何实现这一目标的任何建议?

0 个答案:

没有答案