﻿# V116\. Memsize type is used for catch\.


> Это правило входит в группу "Диагностика 64\\\-битных ошибок"\\\. Разработка правил этой группы больше не ведётся, и в будущем они могут быть отключены\\\. Если вы используете эти правила, \[свяжитесь с нашей поддержкой\]\(https://pvs\-studio\.ru/ru/about\-feedback/\) — мы поможем найти замену или предложим альтернативное решение\\\.

Анализатор обнаружил потенциально возможную ошибку, связанную с использованием memsize типа для перехвата исключения\. Ошибка может заключаться в некорректном перехвате и обработке исключений\.

Рассмотрим пример\. Рассмотрим код, генерирующий и обрабатывающий исключение\.

```cpp
try {
    try {
      throw UINT64(-1);
    }
    catch(size_t) {
      cout << "x64 portability issues" << endl;
    }
  }
  catch(UINT64) {
      cout << "OK" << endl;
  }
```

Результат работы на 32\-битной системе: OK

Результат работы на 64\-битной системе: x64 portability issues

Изменение поведения связано с тем, что на 64\-битной системе тип 'size\_t' начинает совпадать с 'UINT64'\.

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

Более корректное исправление будет состоять в отказе от подобной практики программирования\. Следует использовать специальные классы для передачи информации о возникшей ошибке\.

Дополнительные материалы по данной теме:

1. 64\-битные уроки\. Урок 20\. Паттерн 12\. [Исключения](https://pvs-studio.ru/ru/blog/lessons/0020/)\.