42

我可以在 php 中声明一个引发异常的函数吗?例如:

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

3 回答 3

48

您可以在 PHPDoc 注释中使用 @throws,IDE 会在查看文档时将此函数识别为抛出异常,但与 Java 不同的是,它不会强制您实现 Try{}catch 块。也许未来版本的 IDE(我正在使用 InteliJ 11)将标记那些需要 try{}catch 的地方,这与在识别不一致时对 doc 标记的 JavaScript 类型(例如 String})所做的相同。

简而言之,在使用脚本语言(PHP、JavaScript..)编码时使用 Doclet,在非类型安全和非编译语言的情况下成为更安全编程的补充工具。

像这样:

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) {
}

在此处输入图像描述

于 2013-04-28T07:39:50.243 回答
16

我误读了这个问题,请参阅下面来自 Gilad 的答案(应该被接受)。

上一个答案:

您可以从函数体中抛出一个新异常。都在这里描述

例子:

<?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';
?>
于 2010-07-24T13:36:30.623 回答
5

有关 SPL 附带的异常列表:SPL 异常

如果要创建自己的异常:

PHP 异常页面:

抛出的对象必须是异常类的实例或异常的子类。试图抛出一个不是的对象将导致 PHP 致命错误。

所以是的,可以创建自己的异常。只需阅读一点,就可以帮助您实现您想要的。

于 2010-07-24T13:49:15.740 回答