﻿# V565\. Empty exception handler\. Silent suppression of exceptions can hide errors in source code during testing\.

Найден обработчик исключения, который ничего не делает\.

Пример кода:

```cpp
try {
  ...
}
catch (MyExcept &)
{
}
```

Конечно, такой код вовсе не обязательно ошибочен\. Но очень странно просто подавлять исключение, ничего не делая\. Такая обработка исключений может скрывать дефекты в программе и усложнить тестирование программы\.

Следует, как то реагировать на исключения\. Например, рационально вписать хотя бы "assert\(false\)":

```cpp
try {
  ...
}
catch (MyExcept &)
{
  assert(false);
}
```

Иногда подобные конструкции используют, чтобы вернуть управление из множества вложенных циклов или рекурсивных функций\. Но это плохая практика, так как исключение очень ресурсоемкая операция\. Исключения следует использовать по назначению, а именно при возникновении нештатных ситуаций, которые должны быть обработаны на более высоком уровне\.

Единственное место, где допустимо просто подавлять исключения, это деструкторы\. Деструктор не должен бросать исключений\. Однако, в деструкторах часто не понятно, что делать с исключениями и обработчик вполне может быть пуст\. Анализатор не предупреждает о пустых обработчиках внутри деструкторов:

```cpp
CClass::~ CClass()
{
  try {
    DangerousFreeResource();
  }
  catch (...) {
  }
}
```