我与一群拥有Java和Eclipse背景的程序员一起工作。现在在我们使用C#代码工作的项目中,我几乎到处都看到这个代码,而且大多数时候都更大:
try{
var result = WebService.GetUser("John Cena");
MyLabel.Text = result.Username;
}
catch(Exception e){
MessageBox.Show(e);
}
如果webservice崩溃(除非它是原子的),或者结果为null,将失败。
我更喜欢VS编辑器中抛出的异常,而不是没有跟踪的消息框。我建议团队中的每个人都不要使用try catch块。主要是因为他们滥用它们。
我想听听一些关于应该/不应该处理异常的专业建议。
答案 0 :(得分:3)
不,记录MessabeBox
中的所有异常都是不好的做法。例如,您将获得NullReferenceException
并将其显示给用户。什么?什么用户应该这样做?他知道吗,NullReferenceException
是什么?他会得到什么有用的信息?零。
您必须在某些存储中记录所有例外,但仅显示" business"错误。例如:"您没有许可"等等。
NullReferenceException
是非常低级别的例外,在消息框中显示它。
答案 1 :(得分:2)
记录消息框中的异常是丑陋的,不是用户友好的。
对于后端代码,我们喜欢这样;
try
{
DoSomething();
}
catch (Exception ex)
{
//Logs all details of the exception including full stack trace..
ExceptionManager.LogError("Exception occured on 'DoSomething' method", ex);
}
对于GUI;
try
{
DoSomething();
}
catch (Exception ex)
{
//Custom form to show all details of the exception
(new formExceptionHandller(ex, ex.Message)).ShowDialog();
}
答案 2 :(得分:1)