Php 我应该在这里使用异常吗?

Php 我应该在这里使用异常吗?,php,exception,exception-handling,Php,Exception,Exception Handling,我不熟悉异常,正在尝试找出什么时候适合使用它们。在下面的php代码中,我想将echo(无需告诉用户)更改为只记录消息。我应该用log->notice(…)(例如)替换echo,还是应该使用异常(无论如何我都计划记录) 另外,如果我应该使用异常,那么在这种情况下如何正确使用异常?异常通常设计用于处理意外行为,例如错误或问题 在上面的例子中,我认为它是不必要的,因为您可能希望该文件存在,并且如果已经存在文件(就像您所做的那样),那么应该以一种流动的方式编写程序。这完全取决于你预期会发生什么,而不是什

我不熟悉异常,正在尝试找出什么时候适合使用它们。在下面的php代码中,我想将
echo
(无需告诉用户)更改为只记录消息。我应该用
log->notice(…)
(例如)替换
echo
,还是应该使用异常(无论如何我都计划记录)


另外,如果我应该使用异常,那么在这种情况下如何正确使用异常?

异常通常设计用于处理意外行为,例如错误或问题

在上面的例子中,我认为它是不必要的,因为您可能希望该文件存在,并且如果已经存在文件(就像您所做的那样),那么应该以一种流动的方式编写程序。这完全取决于你预期会发生什么,而不是什么

正常使用的情况可能是:

try
{
    some_function();
}
catch (Exception $e)
{
    echo 'Function didn\'t behave as expected, please try again, here is the error: '.$e->getMessage();
}

异常是处理错误的标准方法。。但在某些情况下,您可能需要使用异常

如果您只想验证文件。。不需要例外。。如果错误的输出需要你重定向或者有连锁反应,或者你正在开发一个框架等等。。。我建议你使用例外

try
{
    if (file_exists($file)) {
           throw new Exception('File already exists and will be overwritten.');
    }
}
catch (Exception $e)
{
   header("Location: error?msg=". base64_encode($e->getMessage()));
}
结论

您使用该脚本的目的将决定是否最好使用exception

我希望这有帮助

谢谢


:)

异常意味着在遇到错误时中断执行流程。这完全取决于如何构造流,如果由于文件存在而要停止流,可以执行以下操作:

try {
    if (file_exists($file)) {
        throw new Exception(sprintf('File already exists and will be overwritten';
    }

    // If above conditional is realized, no code from this point forward will be
    //  executed

} catch (Exception $e) {
    error_log($e->getMessage());
}
在您的特定示例中,我认为代码保持原样是可以的,因为它似乎只是一个警告,这意味着您不想中断执行流,而是希望在警告之后继续执行代码

如果您真的想使用异常,可以实现嵌套异常,但它会变得复杂,最终会被过度使用

更多信息通过PHP文档

我应该用log->notice(…)替换echo吗

我会的,除非你想让用户知道这个问题

try {
    if (file_exists($file)) {
        throw new Exception(sprintf('File already exists and will be overwritten';
    }

    // If above conditional is realized, no code from this point forward will be
    //  executed

} catch (Exception $e) {
    error_log($e->getMessage());
}