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