Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как лучше работать с ошибками
 
 автор: roma67   (10.04.2012 в 19:45)   письмо автору
 
 

Как сделать, что-бы ошибки PHP не вылезали на поверхность сайта и выполнение скрипта не прекращалось.

  Ответить  
 
 автор: cheops   (10.04.2012 в 19:48)   письмо автору
 
   для: roma67   (10.04.2012 в 19:45)
 

Добавьте в начало скрипта следующий вызов
<?php
  error_reporting
(E_ALL & ~E_NOTICE);
?>

  Ответить  
 
 автор: Киналь   (10.04.2012 в 19:48)   письмо автору
 
   для: roma67   (10.04.2012 в 19:45)
 

>Как сделать, что-бы ошибки PHP не вылезали на поверхность сайта
error_reporting()

>выполнение скрипта не прекращалось.
Писать скрипт без ошибок.

  Ответить  
 
 автор: roma67   (11.04.2012 в 17:54)   письмо автору
 
   для: Киналь   (10.04.2012 в 19:48)
 

> Писать скрипт без ошибок.
Не заслуженно обижаете.

Я пишу под хостеров, но у них у всех разная среда, есть функции, которых нет у других или локально.
Так как настройки у хостеров отличаются, то при тестировании локалном выскакивают фатальные ошибки.
Поэтому при использовании error_reporting(0)- все функции хостера, как фатальные ошибки выскакивают и останавливают исполнение.
Можно возится и на каждого хостера придумывать настройки.
А мне хочется как то использовать, например исключения, но не получается, так как не строчка а блок кода вызывает фатальную ошибку.

Как при фатальных ошибках на локальном исключить прерывание исполнения кода, который правильно работает у хостера

  Ответить  
 
 автор: Киналь   (11.04.2012 в 18:05)   письмо автору
 
   для: roma67   (11.04.2012 в 17:54)
 

Так я не обижаю. Если скрипт выдал фатальную ошибку, это значит, что он не может работать, эту ошибку нужно устранить. Описанную вами проблему можно решить, например, при помощи function_exists().

  Ответить  
 
 автор: roma67   (11.04.2012 в 18:18)   письмо автору
 
   для: Киналь   (11.04.2012 в 18:05)
 

Интересно. В PHP различаются ошибки разного типа.
Тут у меня не ошибка, а не знание.
Я не знаю, как прервать выполнения блока кода. Может 20, 50, 100 строк.
А вы мне предлагаете function_exists().
Спасибо. Но это и будет ошибкой, если в каждой строке по 5 раз прописывать

Там блог кода.Извините что повторяюсь.
Не один блог кода, которые надо как то ПРОСТО исключить из работы PHP в локальной среде.

Конечно не ошибкой будет, просто подгружать файлы у хостера, но профессионального мало
Мне как факт грамотного тестирования важен, без ошибки самоделок.
У меня ошибки наверное при работе с исключениями.

Повторюсь, что PHP error_reporting(0), воспринимает не знакомые функции и объекты с переменными, как фатальную ошибки.
Прописывать function_exists() - не везде можно, и код ужасно выглядеть будет
Может есть другой вариант(другая ошибка :) )

  Ответить  
 
 автор: Киналь   (11.04.2012 в 18:47)   письмо автору
 
   для: roma67   (11.04.2012 в 18:18)
 

Так вы говорите, проблема в том, что некоторые функции у хостеров отсутствуют, а локально есть (и наоборот). В связи с этим, если я правильно понял, в зависимости от наличия или отсутствия той или иной функции должны выполняться разные блоки кода. Ну так

<?php
if (function_exists('mega_function_name'))
{
 
// Блок кода №1
}
else
{
 
// Блок кода №2
}
?>

  Ответить  
 
 автор: roma67   (11.04.2012 в 19:18)   письмо автору
 
   для: Киналь   (11.04.2012 в 18:47)
 

Спасибо. Там много функций, в каждой строчке функция, которую не знает локалка.
Можно конечно не делать и ошибки у меня не будет.
Но тогда не будет универсальности, адаптивности у кода

Типа в 1с можно можно так

Попытка 
...
...
.. //100-10000 строк
исключение
...
...
КонецПопытки 

Там что то вроде этого, подзабыл (у меня может быть ошибка вспоминания и возможна неточность написания)

Может инерция мне мешает. Но это как бы идеал для меня.
Почему TRY использовать я не могу ?
http://ru2.php.net/exceptions

try {
  ....
  ....
} catch (Exception $e) {
    echo 'Выброшено исключение: ',  $e->getMessage(), "\n";
}


Этот кусок не работает. (Сервер занят и еще там что-то пишет)
У меня ошибка при написании исключения или в PHP это невозможно, или что-то еще другое?
Если у меня, то какая? Может я мало информации даю: ответов много может быть и поэтому мой вопрос некорректен

  Ответить  
 
 автор: Киналь   (11.04.2012 в 19:51)   письмо автору
 
   для: roma67   (11.04.2012 в 19:18)
 

С исключениями работать не умею, увы, так что посоветовать ничего не могу. Я бы выкрутился без них, но с исключениями, конечно, правильнее. Надеюсь, скоро в теме появится более сведущий человек)

  Ответить  
 
 автор: roma67   (11.04.2012 в 19:55)   письмо автору
 
   для: Киналь   (11.04.2012 в 19:51)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования