Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以声明php函数抛出异常吗?_Php_Exception_Throw_Throws - Fatal编程技术网

我可以声明php函数抛出异常吗?

我可以声明php函数抛出异常吗?,php,exception,throw,throws,Php,Exception,Throw,Throws,我可以用php声明函数吗 这会引发异常吗? 例如: public function read($b, $off, $len) throws IOException 我误读了这个问题,请参见下面吉拉德的答案(应该接受)。 先前的答复: 您可以从函数体中抛出一个新异常。都说出来了 例如: <?php function inverse($x) { if (!$x) { throw new Exception('Division by zero.'); }

我可以用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';
?>

有关SPL附带的异常列表:

如果要创建自己的异常,请执行以下操作:

从页面:

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


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

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

简言之,在使用脚本语言(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) {
}

没有系统来声明可能引发哪些异常。你可以很容易地抛出它们,但最多你可以在函数之前的phpdoc(类似javadoc)注释中添加@throws。+1对于Wrikken的注释这个问题的真正答案是Wrikken的注释。是的,我读了它,当时我在想它可能存在,我错过了教程。好吧,那么我不能声明一个抛出异常的方法了?那IOException呢?有这样的东西我需要自己创造它吗?不,它还不存在。但是您可以声明它(扩展适当的SPL异常(
classioexception扩展RuntimeException{}
)正确答案是Gilad提供的。您需要使用PHPDoc。这不是这个问题的答案。问题是如何声明,而不是如何抛出异常。谢谢,将函数声明为抛出异常如何?我只需要抛出异常,我必须捕获每个异常,如果它是像OutOfRangeException这样的简单异常?我不能在不捕获任何异常的情况下运行代码吗?这应该是我可以接受的答案(OP希望明确说明函数可以引发异常,而不是询问如何引发异常),尽管应该删除图像中大量的尾随空格。PHP7呢?仍然没有?没有,仍然没有。