Не работает пример с исключениями с офиц. сайта ПХП. Код (Text): <?php function inverse($x) { if (!$x) { throw new Exception('Деление на ноль.'); } else return 1/$x; } try { echo inverse(5) . "\n"; } catch (Exception $e) { echo 'Поймано исключение: ', $e->getMessage(), "\n"; } finally { echo "Первое finally.\n"; } try { echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Поймано исключение: ', $e->getMessage(), "\n"; } finally { echo "Второе finally.\n"; } // Продолжение нормального выполнения echo 'Hello World'; ?> Parse error: syntax error, unexpected '{' in D:\server\super-php\test.ru\www\index.php on line 13
это для чего? у меня без них работает норм Добавлено спустя 7 минут 24 секунды: Код (Text): <?php function inverse($x) { if (!$x) { throw new Exception('Деление на ноль.'); } else return 1/$x; } try { echo "1) ".inverse(5)."<br>"; } catch (Exception $e) { echo '1) Поймано исключение: ', $e->getMessage(), "<br>"; } try { echo "2) ".inverse(0)."<br>"; } catch (Exception $e) { echo '2) Поймано исключение: ', $e->getMessage(), "<br>"; } // Продолжение нормального выполнения echo 'Hello World'; ?> Добавлено спустя 13 минут 59 секунд: альтернатива: Код (Text): <?php function inverse($x) { $key = (($x)?1/$x:'Деление на ноль.'); return $key; } echo inverse(5)."<br>"; echo inverse(4)."<br>"; echo inverse(3)."<br>"; echo inverse(2)."<br>"; echo inverse(1)."<br>"; echo inverse(0)."<br>"; ?> 0.2 0.25 0.333333333333 0.5 1 Деление на ноль. ))
Почему кэтч не ловит у меня исключение? Код (Text): <?php class MyException extends Exception { } class Test { public function testing($x) { try { echo 1/$x; } catch (MyException $e) { echo $e->getMessage('Деление на ноль.'); } } } $foo = new Test; $foo->testing(0); ?>
} catch (MyException $e) { заменить на } catch (Exception $e) { Добавлено спустя 2 минуты 20 секунд: не, не помогло. не кидает деление на ноль эксепшн видимо. Добавлено спустя 1 минуту 14 секунд: в примере эксепшн кидается ручками:
Код (Text): php -v PHP 5.4.13 (cli) (built: Mar 25 2013 17:06:04) Код (Text): 0.2 Поймано исключение: Деление на ноль. Hello World Код (PHP): <?php function inverse($x) { if (!$x) { throw new Exception('Деление на ноль.'); } else return 1/$x; } try { echo inverse(5) . "\n"; } catch (Exception $e) { echo 'Поймано исключение: ', $e->getMessage(), "\n"; } try { echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Поймано исключение: ', $e->getMessage(), "\n"; } // Продолжение нормального выполнения echo 'Hello World';