2012-04-04 65 views
4

我是新来的异常,并试图找出何时适合使用它们。在下面的php代码中,我想更改echo(不需要告诉用户)简单地记录消息。我应该用log->notice(...)(例如)替换echo还是应该使用异常(我打算记录它)。我应该在这里使用例外吗?

if (file_exists($file)) { 
    echo 'File already exists and will be overwritten.'; 
} 

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

回答

1

异常通常设计为处理意外的行为 - 例如错误或问题。

在上面的例子中,我认为它不是必需的,因为您可能期望该文件存在,并且应该真正以流的方式编写程序(如果已经存在文件)(Like你已经完成了)。这一切都取决于你期望发生的事情,而不是。

正常使用的情况可能是:

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

例外的是处理错误的标准方法..但他们可能会在你需要使用异常某些情况下。

如果你只是想验证一个文件..不需要异常..如果错误的输出将需要你重定向或有连锁反应或者你可能正在开发一个框架等...我会建议你使用异常

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())); 
} 

结论

您正在使用的脚本什么将决定其是否为您更好使用异常或不

我跳这有助于

感谢

:)

1

例外是指如果遇到错误中断执行的流程。这一切都取决于你如何构建流动,如果你想停止流动,因为一个文件是否存在,你可以做到以下几点:

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()); 
} 

在你的具体的例子,我认为这是确定以保持代码原样,因为它似乎只是一个警告,这意味着你不想破坏执行流程,而是在警告之后继续执行代码。

如果你真的想要使用异常,你可以实现嵌套异常,但它会变得复杂,最终会过度杀伤。

有关exceptions的详细信息,通过PHP文档。

应该,除非你想让用户知道这个问题我刚刚更换回声对数>的通知(...)

我会的。