如何处理异常而不关闭应用程序?

时间:2014-06-09 14:23:49

标签: c# wpf exception-handling

我有一个try catch用于通过WPF C#应用程序发送电子邮件,如下所示:

try { smtpmail.Send(message); }
            catch (Exception err) { throw new CustomException("Error contacting server.", err); }

但是,如果遇到此错误,我不希望应用程序停止运行/崩溃。相反,只需将错误更改为我在应用程序中设置的错误消息TextBox ...或者与NOT崩溃应用程序相关的内容,而是通知用户稍后再试(或者如果问题仍然存在:请联系-and-左右)。

编辑:期望:记录错误,但用户看到了这一点,

errorMsg.Text = "Error contacting server. Try again later, or if problem persists contact Billy Bob Boo";

我该如何实施?

更新:对于不明确的问题道歉。基本上我需要有关如何记录我的错误的帮助,但向用户显示友好的错误消息...但我问得很差。使用提供的评论和答案,我在下面研究了一些我自己的问题。感谢大家! :)

2 个答案:

答案 0 :(得分:0)

为什么要捕获异常然后再次抛出异常?这似乎不太有效。

您可以使用消息框......

try { 
    smtpmail.Send(message); 
}catch (Exception err) { 
    MessageBox.Show(err.Message, "Exception", MessageBoxButton.OK, MessageBoxImage.Error);
}

编辑:您刚才说您不希望用户知道异常。那么,只需将catch块留空:)

答案 1 :(得分:0)

我如何解决我的问题:

bool success = false;
            try { 
                //try to send the message
                smtpmail.Send(message);
                success = true;//everything is good
            }
            catch (Exception err)
            {
                //error with sending the message
                errorMsg.Text = ("Unable to send mail at this time. Please try again later.");

                //log the error 
                errorLog.Log(err); //note errorLog is another method to log the error


                //other stuff relating to certain parts of the application visibility

            }
            finally
            {
                if (success)
                { 
                    //what to do if the email was successfully sent
                }
            }