, чтобы избежать предупреждения, вы должны сделать что-то подобное
if(isset($args['myargs']['custom_value'])) {
if (is_numeric($args['myargs']['custom_value'])) {
echo 'Yes';
} else {
echo 'No';
}
}
Как Как: разбить пользовательские необработанные исключения утверждает:
Диалог Отладка → Исключения показывает дополнительный столбец (Разрыв, когда исключение не обрабатывается пользователем), когда включен параметр «Включить только мой код».
По сути, это означает, что всякий раз, когда исключение выходит за границы вашего кода (и в этом случае оно падает до кода отражения платформы .NET), Visual Studio ломается, потому что считает, что исключение ушло код пользователя. Он не знает, что он вернется в код пользователя позже в стеке.
Таким образом, есть два обходных пути: Отключите Just My Code в меню Инструменты → Параметры → Отладка → Общие или Снимите флажок из необработанных исключений .NET Framework в меню Отладка → Исключения .
РЕДАКТИРОВАТЬ: Я только что пробовал это сам, и похоже, что отражение обрабатывается немного по-другому. Вы можете думать о вызове отражения как о запуске нового уровня «обрабатываемого» в том, что касается отладчика: ничто не перехватывает это исключение до того, как оно будет преобразовано и повторно создано как TargetInvocationException
, поэтому оно прерывается in. Я не знаю, есть ли способ воспрепятствовать этому, но случается ли это очень часто? Если вы регулярно выполняете множество операций, которые приводят к исключениям, вы можете пересмотреть свой дизайн.
Исходный ответ
Зайдите в Debug / Exceptions ... и посмотрите, что это за настройки. Вы увидите такое поведение, если для TargetInvocationException
(или чего-либо более высокого в иерархии) установлен флажок «Выброшено».