【问题标题】:Message dialog not showing in catch clause [duplicate]消息对话框未显示在 catch 子句中 [重复]
【发布时间】:2013-12-10 13:16:39
【问题描述】:

我在我的 Windows 8 应用程序函数中使用以下代码来捕获错误并显示消息对话框

 catch (Exception ex)
            {
                MessageDialog err = new MessageDialog("Error");
                await err.ShowAsync();


            }

但我收到一个错误“不能在 catch 子句的主体中等待”。

但是当我删除 await 时,它可以工作,但我在代码上收到警告“因为没有等待此调用,所以在调用完成之前继续执行当前方法。考虑将 await 运算符应用于结果来电”。

我需要在这个 catch 子句中显示一条消息,我该如何解决这个问题?

【问题讨论】:

标签: c# windows-8 try-catch async-await


【解决方案1】:

与其在catch 中进行工作,不如将异常设置为局部变量。如果它是非空的,那么你知道你需要在 catch 块结束后处理它。

public static async Task Foo()
{
    Exception e = null;
    try
    {
        //just something to throw an exception
        int a = 0;
        int n = 1 / a;
    }
    catch (Exception ex)
    {
        e = ex;
    }
    if (e != null)
        await ShowDialog();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多