например так catch(FExcepttion | SException $e)
Спустя 10 минут, 6 секунд (27.05.2012 - 13:44) alexbel2404 написал(а):
try {
} catch(FExcepttion $ex){
} catch(SExcepttion $ex){
}
Спустя 7 минут, 2 секунды (27.05.2012 - 13:51) Гость_Dmitry написал(а):
т.е. дублирования избежать никак не удается при одинаковой обработке разных исключений?
Спустя 42 минуты, 18 секунд (27.05.2012 - 14:34) Invis1ble написал(а):
ну если тебе не нравится много блоков catch, идущих подряд - проверяй тип исключения
try {
if (...) {
throw new MyException1('');
}
else {
throw new MyException2('');
}
}
catch (Exception $e) {
if ($e instanceof MyException1) {
}
elseif ($e instanceof MyException2) {
}
}
class MyException1 extends Exception {}
class MyException2 extends Exception {}
Спустя 21 час, 49 минут, 49 секунд (28.05.2012 - 12:23) alexbel2404 написал(а):
как-то не красиво получается, имхо)
Спустя 13 дней, 12 часов, 46 минут, 34 секунды (12.06.2012 - 01:10) Guest написал(а):
пипец а
catch(Exception $e)
отменили? он и есть общий тип перехвата исключений
catch(Exception $e)
отменили? он и есть общий тип перехвата исключений
try
{
//офигеть сколько не перехваченных исключений
}
catch(Exception $e)
{
}
Спустя 2 минуты, 4 секунды (12.06.2012 - 01:12) Guest написал(а):
Единый ответ на все! перехваченные исключения только через Exception
Спустя 3 часа, 37 минут, 24 секунды (12.06.2012 - 04:49) Invis1ble написал(а):
Guest
Цитата |
пипец а catch(Exception $e) отменили? он и есть общий тип перехвата исключений |
а здесь http://phpforum.ru/index.php?showtopic=0&v...dpost&p=1870214 я что показал?
Спустя 9 часов, 22 минуты, 40 секунд (12.06.2012 - 14:12) Guest написал(а):
Цитата (Invis1ble @ 12.06.2012 - 01:49) | ||
Guest
а здесь http://phpforum.ru/index.php?showtopic=0&v...dpost&p=1870214 я что показал? |
А теперь,чем вот то, отличается от этого
try {
} catch(MyException1 $ex){
} catch(MyException2 $ex){
}

Смысл в том что бы один сценарий на все! исключения (давайте прочувствуем)
Спустя 5 минут, 12 секунд (12.06.2012 - 14:17) Invis1ble написал(а):
Обычно, кроме того, чтобы поймать исключение, нужно еще и среагировать на каждый тип по-своему. Я показал альтернативу нескольким catch подряд, твой же пример лишь ловит все исключения.
Спустя 1 час, 5 минут, 4 секунды (12.06.2012 - 15:22) Guest написал(а):
Цитата (Invis1ble @ 12.06.2012 - 11:17) |
Обычно, кроме того, чтобы поймать исключение, нужно еще и среагировать на каждый тип по-своему. Я показал альтернативу нескольким catch подряд, твой же пример лишь ловит все исключения. |
Читаем ТС
Цитата |
Существует ли в php multi-catch, подобный Java? например так catch(FExcepttion | SException $e) |
И хотя бы смотрим JAVA. Смысл в том что конструкции на каждые исключения при едином сценарии слишком громоздки и неудобочитаемы.
Спустя 3 минуты, 37 секунд (12.06.2012 - 15:26) Invis1ble написал(а):
Цитата |
Смысл в том что конструкции на каждые исключения при едином сценарии слишком громоздки и неудобочитаемы. |
И? Убери условия из catch-блока в моем примере, если тебя они смущают, и будет тоже самое, что и ты написал. Или тебе просто захотелось поспорить?
Спустя 3 часа, 9 минут (12.06.2012 - 18:35) SlavaFr написал(а):
invis1ble делать можно по разному, но так как предложил @Guest более привычно. Именно так в java, c# и c++ ловят ошибки. Просто желательно держатся общих правил.
Спустя 38 минут, 31 секунда (12.06.2012 - 19:14) Invis1ble написал(а):
SlavaFr
И чем же его способ отличается от моего, кроме того, что у него в catch нет проверок типа? Не пойму никак...
АУ, ОБЪЯСНИТЕ МНЕ СКРЫТЫЙ СМЫСЛ, ЛЮДИ!
Или мой код не ловит все исключения, также как и код от гуеста?
И чем же его способ отличается от моего, кроме того, что у него в catch нет проверок типа? Не пойму никак...
АУ, ОБЪЯСНИТЕ МНЕ СКРЫТЫЙ СМЫСЛ, ЛЮДИ!


Спустя 30 минут, 20 секунд (12.06.2012 - 19:44) SlavaFr написал(а):
ну зачем проверять вообще тип ехception если пхп само распознает тип и прыгнет в нужный catch блок?
Спустя 2 минуты (12.06.2012 - 19:46) Invis1ble написал(а):
Я не писал, что это необходимо делать. Просто как дополнительный пример, т.к. это довольно частая задача на практике.

Спустя 3 часа, 27 минут, 13 секунд (12.06.2012 - 23:13) Guest написал(а):
Цитата (Invis1ble @ 12.06.2012 - 16:14) |
SlavaFr И чем же его способ отличается от моего, кроме того, что у него в catch нет проверок типа? Не пойму никак... АУ, ОБЪЯСНИТЕ МНЕ СКРЫТЫЙ СМЫСЛ, ЛЮДИ! ![]() ![]() |
Мы или не умеем думать или ......
Catch блок и есть блок условия распознавания типа объекта.
Я чего то не допоннимаю в Ваших сознаниях или не пойму

На пальцах:
есть задача что бы для всех исключений был единый сценарий - для этого используем единый блок catch с типом Exception что эквивалентно if($e instanceof Exception) подробнее - Exception есть класс основатель исключений ВСЕХ м ещё раз к ТС обратитесь, в котором указывается Е Д И Н Ы Й сценарий для всех видов исключений, но у Вас эквивалент if()if()if() к -> catch(.....)catch(.....)catch(....)
честно говоря я не ожидал такой ....
Спустя 10 минут, 25 секунд (12.06.2012 - 23:23) Guest написал(а):
ТС имеет ввиду чтобы блок исключений срабатывал исключительно для списка типов исключений, но ни как не исполняя блок.
Спустя 2 минуты, 4 секунды (12.06.2012 - 23:26) Guest написал(а):
И ещё раз вот этот кодж ловит
Цитата |
все исключения, также как и код от гуеста? |
catch(Exception $e){}
Спустя 2 часа, 55 минут, 9 секунд (13.06.2012 - 02:21) SlavaFr написал(а):
ужас, столько гостей, что не развереш кто о чем пишет. Да и я собственно увидев "multi catch" не заметил что требуется
Нет, к сожалению так в пхп неполучится. Остается действительно делать как @Invis1ble предложил или кидать дополнительно новую Ехception которую ты обработаеш на другом уровне.
гдето так:
catch(FExcepttion | SException $e)
Нет, к сожалению так в пхп неполучится. Остается действительно делать как @Invis1ble предложил или кидать дополнительно новую Ехception которую ты обработаеш на другом уровне.
гдето так:
<?php
/**
*
* for php5.3 or later.
* Test with Exception handling
*/
namespace de\bituniverse\test;
class TestException1 extends \Exception{}
class TestException2 extends \Exception{}
class TestException3 extends \Exception{}
class TestException4 extends \Exception{}
class IncorrectParameterException extends \Exception{}
/**
*
* simple class for throws Exception
*
*/
class Test
{
/**
*
* for Exception_Test
* @param string $ExceptionNumber
* @throws TestException.$ExceptionNumber
*/
public function __construct($ExceptionNumber = null)
{
$exception = __NAMESPACE__.'\\TestException' . $ExceptionNumber;
throw new $exception('Test'.$ExceptionNumber, $ExceptionNumber);
}
}
/**
*
* class for Exception Handlin
* @author slava
*
*/
class Main
{
/**
*
* start Exception handling test
* @param mixed $exceptionnumber
*/
public static function go($exceptionnumber = 1 ) {
try{
echo "Start with Exception = {$exceptionnumber}\n-------------------\n";
if(!in_array($exceptionnumber,array(1,2,3)))
{
throw new IncorrectParameterException("incorrect parameter, allowed is 1,2,3\n");
}
//start exception handling for Test class
try {
new Test($exceptionnumber);
}
//TestException1 | TestException2
catch ( TestException1 $e1) {
//
echo 'если нужна специфическая обработка для этой ошибки, '.
"то делай это здесь 1\n" ;
throw new TestException4("Obrabotka1\n", 4);
}
catch ( TestException2 $e2) {
echo 'если нужна специфическая обработка для этой ошибки, '.
"то делай это здесь 2\n" ;
throw new TestException4("Obrabotka2\n", 4);
}
//normal
catch ( TestException3 $e3) {
echo "обработка 3\n";
}
}
catch ( TestException4 $exception4) {
echo "1 | 2 обрабатывай здесь\n";
}
catch (IncorrectParameterException $incorrect) {
echo $incorrect->getMessage();
}
echo "------------------End-------------------\n\n";
}
}
##############################
//Test
header('Content-Type: text; charset=utf-8');
//TestException1 | TestException2
Main::go(1);
Main::go(2);
//normal handling
Main::go(3);
Main::go('unallowed');
?>
Спустя 14 часов, 30 минут, 30 секунд (13.06.2012 - 16:51) Guest написал(а):
жёсткий идио...
Е Д И Н Ы Й С Ц Е Н А Р И Й Н А В С Е Т И П Ы И С К Л Ю Ч Е Н И Й!!! определённой линии типов.
Да как же такого не понять ужос
Е Д И Н Ы Й С Ц Е Н А Р И Й Н А В С Е Т И П Ы И С К Л Ю Ч Е Н И Й!!! определённой линии типов.
Да как же такого не понять ужос


Спустя 8 минут, 51 секунда (13.06.2012 - 17:00) Invis1ble написал(а):
Guest
Цитата |
И ещё раз вот этот кодж ловит |
Не тупи, и твой и мой код ловит "В С Е Т И П Ы И С К Л Ю Ч Е Н И Й!!!"