无法在catch块中引发异常

时间:2020-03-28 13:30:28

标签: c# winforms xaml try-catch

我有一个课程,不应向最终用户显示任何对话框。万一那个用户传递了错误的文件路径,我试图抛出异常并在适当的类中处理它。 但是,尽管有“ throw”指令,Visual Studio仍会显示“异常对话框”并在发生异常后中断应用程序(调试模式)。在发布模式下,应用程序在提供错误的文件路径后会崩溃。我在做什么错了?

GuyManager.cs:

private IStorageFile latestGuyFile;
public IStorageFile LatestGuyFile { get { return latestGuyFile; } }
public string Path { get; set; }


 public async void ReadGuyAsync()
    {
        if (String.IsNullOrWhiteSpace(Path))
            return;

        try
        {
            latestGuyFile = await StorageFile.GetFileFromPathAsync(Path);
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Error occured: " +ex.Message);
            Debug.WriteLine(ex.StackTrace);
            throw;
        }

MainPage.xml.cs:

private async void loadGuy_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            guyManager.ReadGuyAsync();
        }
        catch (Exception ex)
        {
            MessageDialog dialog = new MessageDialog("Error" + ex.Message);
            await dialog.ShowAsync();
        }
    }

1 个答案:

答案 0 :(得分:0)

我在您的Click事件处理程序中看到一个问题。 您将其定义为异步,但是您没有等待任何事情。

您应该更改ReadGuyAsync方法以返回Task而不是void,如下所示:

.bash_profile

并在loadGuy_Click方法中,您应该等待它:

public async Task ReadGuyAsync()