Могу ли я объявить функцию в php, которая выдает исключение? Например:
public function read($b, $off, $len) throws IOException
Могу ли я объявить функцию в php, которая выдает исключение? Например:
public function read($b, $off, $len) throws IOException
Я неправильно понял вопрос, см. ответ Гилада ниже (который следует принять).
Предыдущий ответ:
Вы можете создать новое исключение из тела функции. Все это описано здесь
Пример:
<?php
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
else return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo 'Hello World';
?>
class IOException extends RuntimeException {}
)
- person ircmaxell; 24.07.2010
Вы можете использовать @throws в комментарии PHPDoc, и IDE распознает эту функцию как генерацию исключения при просмотре документа, однако, в отличие от Java, это не заставит вас реализовать блок Try{}catch. Возможно, будущие версии IDE (я использую InteliJ 11) будут отмечать те места, где ожидается try{}catch, так же, как это уже делается с типами JavaScript, помеченными doc (например, String}), при распознавании несоответствия.
Короче говоря, использование Doclet, например, при написании кода на языках сценариев (PHP, JavaScript и т. д.), становится дополнительным инструментом для более безопасного программирования в случае небезопасных по типу и некомпилируемых языков.
как это:
enter code here
/**
* Handle 'get' operations
* @abstract
* @param int $status reference for setting the response status
* @param String $body reference for setting the response data
* @return mixed
* @throws Exception if operation fail
*/
function get(&$status, &$body) {
}
Список исключений, входящих в состав SPL: Исключения SPL.
Если вы хотите создать собственное исключение:
На странице Исключения PHP:
Брошенный объект должен быть экземпляром Класса исключений или подклассом Исключение. Попытка бросить объект, который не является фатальной ошибкой PHP.
Так что да, можно создавать свои собственные исключения. Всего лишь немного чтения поможет вам достичь того, что вы хотите.