Yii try-catch not working!

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
olexeyminaev
Сообщения: 32
Зарегистрирован: 2011.06.30, 22:59

Yii try-catch not working!

Сообщение olexeyminaev »

Такой вопрос:

как заставить Yii передавать управление в блок catch при исключении, а не своему внутреннему обработчику?
Пример:

Код: Выделить всё

try {
  $handle = fopen("/wrongPath", "w");
} catch (Exception $exc) {
  echo 'Im newer be seen';
} 
Блок catch управление не получит. Вопрос как исправить ситуацию?
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Yii try-catch not working!

Сообщение rak »

Объявить свой еррор хэндлер, в котором бросать исключение
maschingan
Сообщения: 75
Зарегистрирован: 2011.01.20, 23:52

Re: Yii try-catch not working!

Сообщение maschingan »

У Вас исключение выбрасывается или PHP Error? try catch должен работать. Обработчик yii срабатывает только на не перехваченные исключения.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Yii try-catch not working!

Сообщение rak »

на ероры try catch не распространяется
olexeyminaev
Сообщения: 32
Зарегистрирован: 2011.06.30, 22:59

Re: Yii try-catch not working!

Сообщение olexeyminaev »

хорошо, тогда такой вопрос,
1. куда лучше поместить такой код (в index.php не работает) ?

Код: Выделить всё

        function myErrorHandler($errno, $errstr, $errfile, $errline) {
            echo $errstr . ' >>' . $errfile;
        }
        set_error_handler('myErrorHandler');
 
2. Как я понял нет способа обработать error в catch ?
maschingan
Сообщения: 75
Зарегистрирован: 2011.01.20, 23:52

Re: Yii try-catch not working!

Сообщение maschingan »

Можно проверить наличие файла и возможность писать в него перед попыткой открыть данный файл (тоже самое для директорий).
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Yii try-catch not working!

Сообщение rak »

Код: Выделить всё

set_error_handler(array('MyErrorHandler', 'errorToException'));
try {
  $handle = fopen("/wrongPath", "w");
} catch (Exception $exc) {
  echo 'Im newer be seen';
} 
restore_error_handler();
 
класс MyErrorHandler

Код: Выделить всё

class MyErrorHandler {

    public static function errorToException($code, $message, $file, $line) {    
        throw new Exception($message, $code);        
    }

}
 
Аватара пользователя
Svyatov
Сообщения: 459
Зарегистрирован: 2010.08.12, 14:50
Откуда: Санкт-Петербург
Контактная информация:

Re: Yii try-catch not working!

Сообщение Svyatov »

Какая-то жесть. Почему бы просто не проверять предварительно файл? file_exists() и is_writable() вам в помощь.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Yii try-catch not working!

Сообщение rak »

бывает есть либа, в которой проверок таких нету. Исходники править неохота и приходится вот так вот извращаться.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii try-catch not working!

Сообщение samdark »

Ответить