[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу словить ошибку try-catch блоком. Помогите!
yuriy
Добрый вечер!
Не могу поймать ошибку 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

и всё.

Спустя 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?

и что было бы если бы ты ее поймал? удавил и сделал вид что ошибки нет?


Цитата
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 и других языках он работает в разы приятней.

Спустя 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 блоками рассказать об этом.

Спустя 2 часа, 46 минут, 49 секунд (26.11.2011 - 08:36) Invis1ble написал(а):
yuriy
нужно выбрасывать исключения оператором throw. Или регистрировать свой обработчик ошибок интерпретатора

Спустя 19 минут, 34 секунды (26.11.2011 - 08:56) Nikitian написал(а):

Спустя 2 часа, 19 минут, 11 секунд (26.11.2011 - 11:15) Zerstoren написал(а):
Цитата (vital @ 26.11.2011 - 01:04)
Цитата (Zerstoren @ 26.11.2011 - 01:27)
try catch ловится только через throw new Exception

Но как по мне, то try отстойный в PHP. В Python, Java и других языках он работает в разы приятней.

Аргументы?
Или так просто, языком потрепать:?

Эээээ...

А вы вызовите не существующую переменную в try
Увидите нотайс и try продолжит выполнятся, а в других языках будет переключение на catch

Когда в том-же JS когда вызываешь не существующую переменную в try то он ничего не выведет, а передаст действие на catch. Такое-же поведение в Python, лично видел и постоянно использую когда доходят руки по программить на питончике.

Убедительно?

Спустя 11 часов, 12 минут, 49 секунд (26.11.2011 - 22:28) Nikitian написал(а):
Zerstoren
В 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
{
public static function error($num, $msg, $file, $line)
{
throw new self($msg, $num);
}
}


set_error_handler(array('MyException', 'error'), E_ALL);
А вообще прежде чем что-то вызывать надо убедиться в возможности это сделать. Либо через TypeHinting
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;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.