Heim >Backend-Entwicklung >PHP-Tutorial >请教PHP 什么时候try catch
大家好 我以前学过php现在刚接触php有点不太明白 try catch哪里好呢
如果发生错误用 exit直接终止可以吗
我感觉 try catch 也是类似于exit直接终止的方法,那我直接用exit 然后终止前面输出一段话 比如说 发生XXX错误终止 这样是不是也能完全代替try catch呢
大家好 我以前学过php现在刚接触php有点不太明白 try catch哪里好呢
如果发生错误用 exit直接终止可以吗
我感觉 try catch 也是类似于exit直接终止的方法,那我直接用exit 然后终止前面输出一段话 比如说 发生XXX错误终止 这样是不是也能完全代替try catch呢
假如要执行的代码中有很多地方都有可能抛出异常呢?
不catch的话,那就得每个地方不停的判断结果然后再不停exit的处理,情景你可以想象一下。
发生错误与发生异常是两码事,但对于答主的问题,
我认为一个项目里应当只有一种异常捕获/异常处理/异常记录的方式,
现在大量的框架和库都在抛异常,同时也对千奇百怪的异常们例如下图:
做了准确的归类,所以就避免了if...else...
这样的野路子,
大家遵守同一个异常处理的方式可以使代码的可维护性大大提高。
补充:
平时写代码时会遇到有些方法或函数会抛出异常,异常是一个Object而不是Error,如果我们对抛出的异常不去处理,则默认的ExceptionHandler或着你使用set_exception_handler()自定义的Handler会被调用,并且中断你的代码继续执行。
那么问题来了,有时候我们往往不想在意这个异常,继续执行我们的程序,这时怎么办呢?
现在轮到try catch finally这个组合出场了,他的机制如下:
它的写法可以参考下面的例子:
<code><?php namespace App; // use KnownException; You need to define this. use Exception; $exceptions = []; try { functionWhichMayThrowExceptions(); // something like: throw new Exception('I am a exception, am I cute?'); return 'You can never see me.'; } /* catch (KnownException $e) { array_push($exceptions, $e->getMessage()); return 'You can never see me.'; } */ catch (Exception $e) { array_push($exceptions, $e->getMessage()); return 'You can never see me.'; } finally { return var_dump($exceptions); }</code>
但是如果catch里面再次try呢?这个时候try-catch的优势和好处就体现出来了,而且可以根据抛出异常的不同定制你的错误代码,当然这是我现在对catach好处的体会,更多的好处希望等待大牛解答了