﻿# V740\. Exception is of the 'int' type because NULL is defined as 0\. Keyword 'nullptr' can be used for 'pointer' type exception\.

Анализатор обнаружил, что будет сгенерировано исключение, имеющее тип 'int', в то время как программист планировал сгенерировать исключение типа "указатель"\.

Рассмотрим пример кода:

```cpp
if (unknown_error)
  throw NULL;
```

В случае возникновения неизвестной ошибки программист решил "бросить" нулевой указатель\. Однако он не учёл, что NULL это не что иное, как обыкновенный 0\. Вот как определён макрос NULL в C\+\+ программах:

```cpp
#define NULL 0
```

Ноль '0' имеет тип 'int'\. Поэтому будет сгенерировано исключения типа 'int'\.

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

```cpp
if (unknown_error)
  throw nullptr;
```

Почему не стоит использовать указатели при работе с исключениями хорошо описано в книге:

Стефан К\. Дьюхэрст\. Скользкие места С\+\+\. Как избежать проблем при проектировании и компиляции ваших программ\. – М\.: ДМК Пресс\. – 264 с\.: ил\. ISBN 5\-94074\-083\-9\.