Реклама на сайте Advertise with us

PHP. Исключения

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Добрых Дел Мастер

С нами с 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
Сообщения: 10559
Рейтинг: 5961


Передовик Master-X (01.06.2018) Передовик Master-X (16.06.2019) Передовик Master-X (01.04.2020) Передовик Master-X (16.04.2020) Передовик Master-X (16.10.2021) Ветеран трепа Master-X (01.11.2021)
Ссылка на сообщениеДобавлено: 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';

5
 



С нами с 24.06.10
Сообщения: 2686
Рейтинг: 543

Ссылка на сообщениеДобавлено: 07/01/11 в 13:22       Ответить с цитатойцитата 

самое правильное, это ессно чуть изменить либу и добавить явную проверку файла и подавление ворнингов при софтверных ошибках - @
Но если либа не твоя, зазендена или ещё что-то, то делай просто
Код:
try {
$lib->methonThrownException();
} catch (MyEx $me) {
    # handlers...
} catch (Exception $generalError) {
    # general error handlers...
}
# любой код, который должен выполняться после вызова метода с ошибкой

}

removed by moderator

5
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 07/01/11 в 17:15       Ответить с цитатойцитата 

mr. snatch: спасибо. действительно smail54.gif. В 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 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »