Вы можете щелкнуть правой кнопкой мыши по проекту, нажать на экспорт, набрать «jar», выбрать «Runnable JAR File Export». Там у вас есть опция «Извлечь необходимые библиотеки в сгенерированный JAR».
set_error_handler
разработан для обработки ошибок с кодами: E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE
. Это вызвано тем, что set_error_handler
предназначен, чтобы быть методом создания отчетов об ошибках, брошенных пользовательской функцией ошибок trigger_error
.
Однако я действительно находил этот комментарий в руководстве, которое может помочь Вам:
"Следующие ошибочные типы не могут быть обработаны с определяемой пользователем функцией:
E_ERROR
,E_PARSE
,E_CORE_ERROR
,E_CORE_WARNING
,E_COMPILE_ERROR
,E_COMPILE_WARNING
, и большая частьE_STRICT
повышенный в файле, гдеset_error_handler()
назван."Это не точно верно.
set_error_handler()
не может обработать их, ноob_start()
может обработать, по крайней мере,E_ERROR
.<?php function error_handler($output) { $error = error_get_last(); $output = ""; foreach ($error as $info => $string) $output .= "{$info}: {$string}\n"; return $output; } ob_start('error_handler'); will_this_undefined_function_raise_an_error(); ?>
Действительно, хотя об этих ошибках нужно тихо сообщить в файле, например. Надо надеяться, у Вас не будет многих E_PARSE
ошибки в Вашем проекте!:-)
Что касается общего сообщения об ошибке, придерживайтесь за Исключениями (я нахожу полезным заставить их соединиться с моей системой MVC). Можно создать довольно универсальное Исключение, чтобы предоставить возможности через кнопки и добавить много описания для уведомления пользователя что случилось.
Из документации (добавленный акцент):
Следующие ошибочные типы не могут быть обработаны с определяемой пользователем функцией: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING и большинство E_STRICT повысили в файле, где set_error_handler () называют.
Вызов неопределенных функций инициировал E_ERROR, таким образом он не может быть обработан ошибочным обратным вызовом (или обработчиками исключений в этом отношении). Все, что можно сделать, установлено error_reporting на 0.
PS при прокрутке собственного обработчика ошибок необходимо заботиться для обработки правильно оператор. Из документации (добавленный акцент):
Важно помнить, что стандартный обработчик ошибок PHP полностью обойден. error_reporting () настройки не будут иметь никакого эффекта, и Ваш обработчик ошибок назовут невнимательным - однако Вы все еще можете считать текущее значение error_reporting и действия соответственно. Особо значимый то, что это значение будет 0, если оператор, который вызвал ошибку, предварительно ожидался оператор контроля ошибок.
Почему мой пользовательский обработчик ошибок не ловит функции undefinedd? Есть ли другие проблемы, которые это вызовет?
В предположении я сказал бы, что неопределенные функциональные ошибки перемещаются через другой путь выполнения, чем другие ошибочные типы. Возможно, разработчики PHP могли сказать Вам больше, кроме я сомневаюсь, что PHP всегда разработан.
Если Вы хотели бы, чтобы Ваши сценарии перестали работать корректно, все еще пишущий им PHP-стиль, попытайтесь поместить всю страницу в функцию и затем назовите его в a try..catch
блок.