我可以声明php函数抛出异常吗?
我可以用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.'); }
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呢?仍然没有?没有,仍然没有。