Не могу поймать ошибку try-catch блоком. Не подскажите, как тут быть?
Ошибка возникает в недрах run(), но в блок catch ничего не попадает. (
static public function instance(array $config = array()) {
try {
if (!self::$_instance) self::$_instance = new self($config);
$register = self::$_instance->init();
$register = self::$_instance->run($register);
self::$_instance->end($register);
return self::$_instance;
}
catch (Exception $exc) {
gen_Tblk_ab::print_damp($exc->getMessage(), 'log.txt');
echo $exc->getMessage();
}
}
Спустя 7 минут, 44 секунды (26.11.2011 - 00:02) yuriy написал(а):
Интерпретатор просто кидает браузеру строку:
Fatal error: Call to undefined method mdl_TdomainObj::perform() in D:\xampplite\htdocs\www\classes\library\class.lib_TprocessingSpecialTags.php on line 86
и всё.
Fatal error: Call to undefined method mdl_TdomainObj::perform() in D:\xampplite\htdocs\www\classes\library\class.lib_TprocessingSpecialTags.php on line 86
и всё.
Спустя 9 минут, 37 секунд (26.11.2011 - 00:12) Fredrich написал(а):
Это что kohana
Спустя 33 секунды (26.11.2011 - 00:12) Fredrich написал(а):
или Yii более похоже
Спустя 10 минут, 1 секунда (26.11.2011 - 00:22) yuriy написал(а):
Нет, это мой фреймворк. Но вот ошибку не могу поймать. (
Спустя 23 минуты, 31 секунда (26.11.2011 - 00:46) caballero написал(а):
а с какой стати эта ошибка должна ловится try?
и что было бы если бы ты ее поймал? удавил и сделал вид что ошибки нет?
а с какой стати эта ошибка должна ловится try?
и что было бы если бы ты ее поймал? удавил и сделал вид что ошибки нет?
и что было бы если бы ты ее поймал? удавил и сделал вид что ошибки нет?
а с какой стати эта ошибка должна ловится try?
и что было бы если бы ты ее поймал? удавил и сделал вид что ошибки нет?
Цитата |
Fatal error: Call to undefined method mdl_TdomainObj::perform() in D:\xampplite\htdocs\www\classes\library\class.lib_TprocessingSpecialTags.php on line 86 |
Не очень понятно что ты ловишь если ошибка вот она - сам же написал.
Дать ссылку на гугло-переводчик?
Спустя 1 час, 41 минута, 22 секунды (26.11.2011 - 02:27) Zerstoren написал(а):
try catch ловится только через throw new Exception
Но как по мне, то try отстойный в PHP. В Python, Java и других языках он работает в разы приятней.
Но как по мне, то try отстойный в PHP. В Python, Java и других языках он работает в разы приятней.
Спустя 1 час, 35 минут, 57 секунд (26.11.2011 - 04:03) vital написал(а):
Цитата (Fredrich @ 25.11.2011 - 23:12) |
или Yii более похоже |
Человек к-й не писал ни на одном из фреймворков пытается их угадывать. Мощно.
Разрешите поинтереосваться, на чем основаны ваши предположения?
Спустя 1 минута, 9 секунд (26.11.2011 - 04:04) vital написал(а):
Цитата (Zerstoren @ 26.11.2011 - 01:27) |
try catch ловится только через throw new Exception Но как по мне, то try отстойный в PHP. В Python, Java и других языках он работает в разы приятней. |
Аргументы?
Или так просто, языком потрепать:?
Спустя 1 час, 45 минут, 10 секунд (26.11.2011 - 05:49) yuriy написал(а):
Утро доброе!
Я не знаю, с какой кстати ошибка должна ловиться, или с кокой кстати она должна не ловиться. Мне просто нужно её поймать. И я прошу того, кто знает, как это делать try-catch блоками рассказать об этом.
Я не знаю, с какой кстати ошибка должна ловиться, или с кокой кстати она должна не ловиться. Мне просто нужно её поймать. И я прошу того, кто знает, как это делать try-catch блоками рассказать об этом.
Спустя 2 часа, 46 минут, 49 секунд (26.11.2011 - 08:36) Invis1ble написал(а):
yuriy
нужно выбрасывать исключения оператором throw. Или регистрировать свой обработчик ошибок интерпретатора
нужно выбрасывать исключения оператором throw. Или регистрировать свой обработчик ошибок интерпретатора
Спустя 19 минут, 34 секунды (26.11.2011 - 08:56) Nikitian написал(а):
Может это поможет http://phpforum.ru/index.php?showtopic=534...=0#entry1542534
Спустя 2 часа, 19 минут, 11 секунд (26.11.2011 - 11:15) Zerstoren написал(а):
Цитата (vital @ 26.11.2011 - 01:04) | ||
Аргументы? Или так просто, языком потрепать:? |
Эээээ...
А вы вызовите не существующую переменную в try
Увидите нотайс и try продолжит выполнятся, а в других языках будет переключение на catch
Когда в том-же JS когда вызываешь не существующую переменную в try то он ничего не выведет, а передаст действие на catch. Такое-же поведение в Python, лично видел и постоянно использую когда доходят руки по программить на питончике.
Убедительно?
Спустя 11 часов, 12 минут, 49 секунд (26.11.2011 - 22:28) Nikitian написал(а):
Zerstoren
В php ошибки не являются исключениями. Так сложилось исторически.
В php ошибки не являются исключениями. Так сложилось исторически.
Спустя 45 минут, 22 секунды (26.11.2011 - 23:13) caballero написал(а):
Цитата |
Я не знаю, с какой кстати ошибка должна ловиться, или с кокой кстати она должна не ловиться. Мне просто нужно её поймать. И я прошу того, кто знает, как это делать try-catch блоками рассказать об этом. |
Разговор слепого с шлухим. Тебе ж у же неоднократно объяснили.
Во первых такие ошибки траем не ловятся
во вторых у тебя конкретно указана строка ошибки - она сидит и ждет тебя там - где ты ее хочешь ловить и зачем?
Может просветишь народ какую проблемму тебе надо решить на самом деле и почему именно траем.
Спустя 8 минут, 9 секунд (26.11.2011 - 23:21) bulgakov написал(а):
Ну насколько я понимаю try catch в основном служит не для отлавливания ошибок, а для отлавливания исключительных ситуаций, для ошибок есть свои инструменты. Ошибки интерпритатора это совсем другое, а вот уже например деление на ноль это с точки зрения интерпритатора не ошибка, а для нас это как раз исключительная ситуация вот ее и надо отслеживать.
Спустя 1 день, 9 часов, 8 минут, 22 секунды (28.11.2011 - 08:30) linker написал(а):
Можешь ошибки PHP переводить в исключения и тогда будешь ловить их try catch(), не все правда, но многие
class MyException extends ExceptionА вообще прежде чем что-то вызывать надо убедиться в возможности это сделать. Либо через TypeHinting
{
public static function error($num, $msg, $file, $line)
{
throw new self($msg, $num);
}
}
set_error_handler(array('MyException', 'error'), E_ALL);
public function run(MyClass $object)либо проверять наличие метода
{
$object->method();
}
...
$a->run(new MyClass());
public function run($object)
{
if (method_exists($object, 'method'))
$object->method();
}
...
$a->run(new MyClass());
Спустя 8 часов, 6 минут, 11 секунд (28.11.2011 - 16:36) yuriy написал(а):
Большое спасибо, Линкер! Лаконично и по теме. Без лишней демогогии. В книге есть пример перехвата ошибок, но там реализация на функции а не на классе.
Спустя 32 секунды (28.11.2011 - 16:36) yuriy написал(а):
На классе гораздо изящнее, конечно. )
Спустя 3 минуты, 59 секунд (28.11.2011 - 16:40) yuriy написал(а):
Только почему-то PHP не ест конструкцию E_ALL~E_NOTICE. Остальные битовые операции проходят, а эта нет.
_____________
void x;