Могу ли я объявить, что функция php вызывает исключение? - PullRequest
37 голосов
/ 24 июля 2010

Могу ли я объявить функцию в php что выдает исключение? Например:

public function read($b, $off, $len) throws IOException 

Ответы [ 3 ]

38 голосов
/ 28 апреля 2013

Вы можете использовать @throws в комментарии PHPDoc, и IDE распознает эту функцию как генерирующую исключение при просмотре документа, однако, в отличие от Java, она не заставит вас реализовать блок catch Try {}. Возможно, будущие версии 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) {
}

enter image description here

16 голосов
/ 24 июля 2010

Вы можете выбросить новое исключение из тела функции.Здесь все описано

Пример:

<?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';
?>
5 голосов
/ 24 июля 2010

Список исключений, которые поставляются с SPL: Исключения SPL .

Если вы хотите создать собственное исключение:

Из PHPИсключения страница:

Брошенный объект должен быть экземпляром класса исключения или подклассом исключения.Попытка выбросить объект, который не является, приведет к фатальной ошибке PHP.

Так что да, возможно создать ваши собственные исключения.Небольшое чтение поможет вам достичь того, чего вы хотите.

...