捕获的例外在哪里? (试着抓)

时间:2016-10-05 15:34:03

标签: c# exception try-catch

当使用后台工作者类在try catch语句中调用方法时,方法中有try catch语句,哪一个捕获异常?

private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
    try
    {
        Do();
    }
    catch (Exception ex)
    {
        System.Windows.MessageBox.Show("Error:" + e.Result + ex.Message);
    }
}

private void Do ()
{
   try
   {
       //Do something, open a file etc.
       FileStream fs = new FileStream("file.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
   }
   catch (Exception e)
   {
       System.Windows.MessageBox.Show("Error:" + e.Result + ex.Message);
   }
}

使用:backgroundWorker1.RunWorkerAsync();

调用

有没有办法确保在方法中处理异常?那么背景工作者不会破坏?

1 个答案:

答案 0 :(得分:1)

内部因为这个捕获“更接近”“错误”

这一个:

private void Do ()
{
   try
   {
       //Do something, open a file etc.
       FileStream fs = new FileStream("file.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
   }
   catch (Exception e)
   {
       System.Windows.MessageBox.Show("Error:" + e.Result + ex.Message);
   }
}