Throwable.getCause () выполняется рекурсивно? [Дубликат]

Ответ, заданный @monkey, является одним из правильных, но он неполный.

Если вы хотите использовать MinGW , вы должны выбрать C , C ++, а также другие инструменты разработки, предлагаемые во время процесса установки MinGW, также получить «make.exe.»

. Вы также должны установить путь в make.exe в env.

Чтобы выполнить его ответ, выполните следующие шаги:

  1. Добавьте каталог bin в mingw32 в переменные среды
  2. Добавьте C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin; в PATH
  3. Изменить (создать, если он не существует), файл distutils.cfg, расположенный в C:\Python26\Lib\distutils\distutils.cfg, будет:
    [build]
    compiler=mingw32
    

Убедитесь, что переменные окружения установлены, открыв новый cmd. EXE.

8
задан sudocode 29 June 2012 в 15:19
поделиться

1 ответ

Глядя на исходный код Throwable :

  187       /**
  188        * The throwable that caused this throwable to get thrown, or null if this
  189        * throwable was not caused by another throwable, or if the causative
  190        * throwable is unknown.  If this field is equal to this throwable itself,
  191        * it indicates that the cause of this throwable has not yet been
  192        * initialized.
  193        *
  194        * @serial
  195        * @since 1.4
  196        */
  197       private Throwable cause = this;

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

Вы увидите это в отладчике, но getCause не заботится о возврате рекурсивной ссылки:

  414       public synchronized Throwable getCause() {
  415           return (cause==this ? null : cause);
  416       }
16
ответ дан sudocode 1 September 2018 в 08:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: