Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 07/01/11 в 07:43 |
господа помогите врубиться.
Цитата: |
define('N', "\n");
class MyExpr extends Exception {
public function ttt() {
echo 'тут любое действие' . N;
}
}
$a = new MyExpr();
try {
echo 'код 1' . N;
if (1 == 1) {
throw new $a;
}
echo 'код 2' . N;
} catch (MyExpr $a) {
$a->ttt();
}
|
Цитата: |
user@user-desktop:~$ php ext.php
код 1
тут любое действие
user@user-desktop:~$
|
Есть большая большая либа, внутри которой при открытии несуществующего файла методом $this->openfile('path/to/file') генериться исключение и либа падает. Вопрос: как сделать так чтобы при открытии несуществующего файла либа не падала (выбрасывая неперехваченное исключение) а просто игнорила, и ход работы скрипта продолжался дальше? Правильный ответ наверно - перехватить исключение. Ну вот перехватили. А что дальше делать? Мне надо вернуться в ту же точку и до_выполнить скрипт. Т.е. чтобы, на примере выше, было так:
Цитата: |
user@user-desktop:~$ php ext.php
код 1
тут любое действие
код 2
user@user-desktop:~$
|
Либа большая, хер проссы что там накручено на пхпюнит, большая иерархия классов исключений итд. с либой разобраться не могу. надо просто сделать так чтобы ошибка открытия файла игнорилась и скрипт дальше продолжал работу.
|
|
пришел к победе коммунистического труда
|
0
|
|
|
С нами с 08.02.03
Сообщения: 10564
Рейтинг: 5962
|
Добавлено: 07/01/11 в 09:49 |
Если просто ошибку открытия убрать ищи fopen и меняй на @fopen ну или другие функции открытия ищи...
У тя конкретно $this->@openfile('path/to/file')
Ну или
if (file_exists ('path/to/file'))
$this->openfile('path/to/file')
else
echo 'файла нет\n';
|
|
|
|
С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543
|
Добавлено: 07/01/11 в 13:22 |
самое правильное, это ессно чуть изменить либу и добавить явную проверку файла и подавление ворнингов при софтверных ошибках - @
Но если либа не твоя, зазендена или ещё что-то, то делай просто
Код: | try {
$lib->methonThrownException();
} catch (MyEx $me) {
# handlers...
} catch (Exception $generalError) {
# general error handlers...
}
# любой код, который должен выполняться после вызова метода с ошибкой
} |
|
|
|
|
Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 07/01/11 в 17:15 |
mr. snatch: спасибо. действительно . В try заворачивать только проблемный вызов.
Цитата: |
define('N', "\n");
class MyExpr extends Exception {
public function ttt() {
echo 'тут любое действие' . N;
}
}
$a = new MyExpr();
try {
echo 'код 1' . N;
if (1 == 1) {
throw new $a;
}
echo 'код 2' . N;
}
catch (MyExpr $a) {
$a->ttt();
}
echo 'код 3' . N;
|
Цитата: |
user@user-desktop:~$ php ext.php
код 1
тут любое действие
код 3
user@user-desktop:~$
|
всех заплюсовал
|
|
пришел к победе коммунистического труда
|
0
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |