我写的函数如果无法完成工作就抛出异常。对于高效的环境,我认为将异常重定向到一个漂亮的错误页面。因此,我正在考虑在每个脚本的开头设置异常处理程序set_exception_handler
。错误页面如何知道发生了哪个错误?我想把错误代码放到像header("Location: error.php?code=1234")
这样的网址中。在开发阶段,我只是不设置异常处理程序,因此每个异常都会打印到php默认错误屏幕 Uncaugt Exception:... ,包含所有有用的信息。
我已阅读Exceptions in PHP - Try/Catch or set_exception_handler?但不知道如何编写前端控制器脚本,并且认为这可能需要付出很多努力。
我是一名喜欢以正确的方式处理错误的PHP初学者,但我不确定我是做对还是错。您是否认为可以像上述那样进行,或者您有其他建议吗?
谢谢!
答案 0 :(得分:2)
说实话,我觉得现在为你担心这类事情还为时过早。
现在只是热衷于掌握OOP,因为稍后你会(并且可能必须)使用MVC框架,它会为你捕获所有错误/异常。看一下symfony:在开发环境中,它会显示异常和堆栈跟踪,但是在生产环境中。它吐出一个漂亮的,可定制的错误页面。
我的意思是:不要重新发明轮子,看看其他人是如何解决类似问题的。最好使用他们的解决方案(但请记住也要理解它们)。
答案 1 :(得分:2)
不要重定向。在您的异常处理函数中,只需在该点输出错误页面(或包含一个包含错误页面HTML的PHP文件)。您还需要设置适当的状态代码(使用PHP标头功能)。
修改:为什么不重定向:
答案 2 :(得分:1)
你认为这样做是否正常 上面描述或你有其他 建议?
不,我认为这不是一个好的解决方案。你不想对出现的每一个问题都使用金锤。一些例外应该与其他例外处理不同。此外,可能需要在代码的一部分中以不同方式处理特定异常。我建议set_exception_handler
作为最后的手段,处理由于某种原因没有被正确捕获的异常,并继续编写try / catches以更精细地处理事情。