﻿# V5606\. OWASP\. An exception handling block does not contain any code\.

Анализатор обнаружил пустой блок обработки исключения \('catch' или 'finally'\)\. Отсутствие корректной обработки исключений может привести к снижению уровня надёжности приложения\. 

В некоторых случаях отсутствие корректной обработки исключительных ситуаций может стать причиной возникновения уязвимости\. Недостаточное логирование и мониторинг выделены в отдельную категорию рисков в OWASP Top 10 Application Security Risks 2017: [A10:2017\-Insufficient Logging & Monitoring](https://owasp.org/www-project-top-ten/2017/A10_2017-Insufficient_Logging%2526Monitoring)\.

Пример кода с пустым 'catch':

```cpp
try
{
  someCall();
}
catch
{

}
```

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

В качестве обработки исключения можно использовать, например, логгирование\. Это по крайней мере не позволит исключительной ситуации остаться незамеченной:

```cpp
try
{
  someCall();
}
catch (Exception e)
{
  Logger.Log(e);
}
```

Не менее подозрительным моментом является наличие в коде пустого блока 'finally'\. Это может свидетельствовать о том, что какая\-то логика, необходимая для надёжной работы приложения, не реализована\. Например:

```cpp
try
{
  someCall();
}
catch 
{ .... }
finally
{
}
```

Подобный код с большой вероятностью свидетельствует об ошибке или попросту избыточен\. В отличие от пустого блока 'catch', который может быть использован для подавления исключения, у пустого блока 'finally' нет какого\-либо практического применения\.