我想将通知转换为例外。我将整个网站放在try-catch块中 - 每个错误(在try块中)将调用set_error_handler()方法,该方法将抛出新的ErrorException。然后捕获异常,并显示正确的消息。
接下来应该发生的事情是 - 应该执行try块内的E_NOTICE之后的所有内容。当下一个错误发生时,所有内容都会以相同的方式再次发生,直到try块结束。
但是,在捕获异常后,try块似乎会中断。
如何处理?
答案 0 :(得分:2)
在抛出异常的时刻,执行在try
块中停止。如果有一个匹配异常(或所有异常)的catch,则运行该块。此时,程序在 catch之后继续(如果程序结束,则导致它退出)。它无法从尝试部分内部的位置拿起。
抛出异常是不可恢复的,直到它被捕获为止(如果是)。如果要从中恢复,则必须在之前的点捕获它,然后才能恢复代码。所以你只需要多个try / catch,而不是整个站点的一个。或者不要在每个E_NOTICE上抛出异常。我是否可以问你为什么要通知首先产生异常?可能有更好的方法来完成你想要做的事情。