-1

所以我已经阅读了 php.net 上的所有示例。他们的任何一个例子都没有真正让我印象深刻。我知道异常用于什么,只是不知道如何在我的代码中正确使用 throw、try 和 catch。另外,我想知道这是否仅用于OOP?或者只是任何 PHP 代码?我不知道如何处理“抛出新异常”。我所知道的是代码进入 try 块,如果发生任何错误,catch 应该处理错误。请帮忙!

4

2 回答 2

1

使用伪代码,因为这不仅仅在 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);
    }

}

希望这是有道理的。

于 2013-01-08T02:58:18.380 回答
0

当您因为出现问题而想要停止执行时,请抛出错误(而不是 die() 或继续执行但结果不可预测)。

即使抛出的异常没有被 try catch 块捕获,仍然可以获得堆栈跟踪、行号和文件路径以方便调试。

异常是 PHP 中最好的错误处理机制。它们将帮助您查找并抛出错误以简化调试。

于 2013-01-08T02:48:36.370 回答