所以我已经阅读了php.net上的所有示例。他们的例子没有一个能打动我。我知道异常的用途,只是不知道如何在代码中正确使用throw、try和catch。另外,我想知道这是否只用于OOP?或者只是任何PHP代码?我不知道如何处理"抛出新的异常"。我所知道的是代码进入try块,如果发生错误,catch应该处理错误。请帮助!
使用伪代码,因为这不仅仅在PHP中有用。
有时方法会遇到它们不能(或不想)处理的问题。假设我们有一个sendExDrunkenText($ex)
方法。这需要一个$ex
参数,并将查找前女友并向他们发送一个漫无聊来的短信。
如果这个方法不能找到找到$ex
提供的一个替代返回false或类似的是抛出某种异常:
if(! exExists($ex)){
throw NoSuchExException("Cant't find supplied ex");
}
(在预编译语言中——例如java——你可以要求调用你的方法的方法处理或重新抛出你的异常。因此,imo异常在这些语言中更有用)。
现在,如果您正在使用上面的方法,您可能希望在抛出异常时采取一些操作。在这种情况下,您可以捕获异常并适当地处理它:
foreach($exList as $ex){
try{
sendExDrunkenText($ex);
}catch(NoSuchExException $exception){
removeFromAddressBook($ex);
}
}
当您想要停止执行,因为某些地方出错时,抛出一个错误(而不是die()或继续执行,但结果不可预测)。
即使抛出的异常没有被try catch块捕获,仍然可以获得堆栈跟踪,行号和文件路径,以简化调试。
异常是PHP最好的错误处理机制。它们将帮助您发现并抛出错误,以简化调试。