Лучший синтаксис C # для игнорирования исключения - PullRequest
2 голосов
/ 31 декабря 2010

В некоторых случаях мы не заботимся о Exception и просто должны возобновиться. Я знаю, что это побочные эффекты и ...

Здесь мой вопрос о лучшем синтаксисе C# для игнорирования exception, например:

try
{
   // exceptional code
}
catch { }

но это кажется немного уродливым, особенно то, что пустые скобки после catch. Есть ли более элегантный синтаксис?

Ответы [ 5 ]

4 голосов
/ 31 декабря 2010

У вас никогда не должно быть такого пустого выражения catch. Иметь ошибку в коде и даже не замечать ее хуже, чем просто иметь ошибку в коде.

Если вы действительно хотите перехватывать исключения и игнорировать их, попробуйте перехватить только тот тип исключения, который вы хотите игнорировать, и добавьте комментарий о причине его игнорирования:

try {
  // exceptional code...
} catch(FormatException) {
  // A comment describing why on earth you are cathing
  // an exception and ignoring it.
}
2 голосов
/ 31 декабря 2010

Ммм ... Я не думаю, что есть что-то "не элегантное" в этих двух скобках (однако факт, что вы глотаете исключения не так часто, как комментарий) У тебя должны быть проблемы побольше.

1 голос
/ 31 декабря 2010

Вероятно, не лучший маршрут, но вы могли бы сделать это, чтобы быть немного более информативным:

try
{
    //  exceptional code
}
catch (Exception ex)
{
}

Однако я думаю, что пустые скобки передают одно и то же сообщение тому, кто поддерживает это в будущем.

Лучше было бы реорганизовать ваш исключительный код. Если вы игнорируете исключение, скорее всего, его можно (и нужно) сделать лучше.

0 голосов
/ 31 декабря 2010

Вы можете использовать Spring.NET AOP

Совет обработчика исключений

Выдержки из ссылки

Исходные исключения для выполнения обработки перечислены сразу после ключевого слова «on» и могут быть разделены запятой. После этого необходимо выполнить действие: записать, перевести, перенести, заменить, вернуть или проглотить.

0 голосов
/ 31 декабря 2010

Я считаю, что обычно при игнорировании исключений вы игнорируете исключения определенного типа и, по крайней мере, предоставляете некоторую обработку для System.Exception.В любом случае, я бы задокументировал в улове, почему соответствующее исключение игнорируется.

try {

   ... exceptional code

} catch (InvalidOperationException ex) {
   // This exception can be ignored because ..
} catch (Exception ex) {
   ... error handling code
}
...