Я привык делать:
private void buttonFoo_Click()
{
try
{
foo();
}
catch(ApplicationException ex)
{
Log.UserWarning(ex);
MessageVox.Show(ex.Message);
}
catch(Exception ex)
{
Log.CodeError(ex);
MessageBox.Show("Internal error.");
}
}
Это позволяет сделать разницу между:
- Ошибка кода системы C #, которую я должен исправить.
- "Нормальная" ошибка пользователя, которая не требует от меня исправления.
Я знаю, что не рекомендуется использовать ApplicationException, но он прекрасно работает, поскольку очень мало классов , которые не соответствуют шаблону ApplicationException.