这个问题是关于只有在没有抛出异常的情况下才在tryblock之外执行代码的最佳方式。try{//experiment//can'tputcodeafterexperimentbecauseIdon'twantapossibleexceptionfromthiscodetobecaughtbythefollowingcatch.Itneedstobubble.}catch(Exception$explosion){//containtheblast}finally{//cleanup//thisisnottheanswersinceitexecutesevenifanexceptiono
我的项目中没有多种异常。现在,(我们使用MVC)我的trycatch包含了我的整个代码:try{fronController::dispatch($somthing...);}catch(Exception$E){//handleerrors}我想知道是否有充分的理由以尽可能具体的方式使用try-catch块,或者只是保持现在的通用性? 最佳答案 异常的想法是使函数可以报告失败而不必返回特殊值。在旧的PHP中,函数可以说它有问题的唯一方法是返回一些特殊值,例如false或-1.这并不令人愉快。例如,假设我正在编写file_get_c
我的项目中没有多种异常。现在,(我们使用MVC)我的trycatch包含了我的整个代码:try{fronController::dispatch($somthing...);}catch(Exception$E){//handleerrors}我想知道是否有充分的理由以尽可能具体的方式使用try-catch块,或者只是保持现在的通用性? 最佳答案 异常的想法是使函数可以报告失败而不必返回特殊值。在旧的PHP中,函数可以说它有问题的唯一方法是返回一些特殊值,例如false或-1.这并不令人愉快。例如,假设我正在编写file_get_c
我正在我的系统中开发一些低端代码,这些代码使用php异常类的多个子类。本质上,我将异常(exception)情况分为几类。我想做的是两件事。我需要在一个地方处理在应用程序中触发的所有异常。我需要能够登录然后处理/生成View,以便用户接收有关应用程序的反馈。错误。我想知道我是否应该使用某种try/catch来封装应用程序?我一点也不喜欢这个想法,这听起来像是一个非常蹩脚的实现。我也不喜欢set_exception_handler的想法,除非我可以将函数设置为对象的方法。这样做的原因是,如果我指定一个函数来处理异常,这将是应用程序中的第一个函数。其他一切都是对象的方法。希望我已经提供了有
我正在我的系统中开发一些低端代码,这些代码使用php异常类的多个子类。本质上,我将异常(exception)情况分为几类。我想做的是两件事。我需要在一个地方处理在应用程序中触发的所有异常。我需要能够登录然后处理/生成View,以便用户接收有关应用程序的反馈。错误。我想知道我是否应该使用某种try/catch来封装应用程序?我一点也不喜欢这个想法,这听起来像是一个非常蹩脚的实现。我也不喜欢set_exception_handler的想法,除非我可以将函数设置为对象的方法。这样做的原因是,如果我指定一个函数来处理异常,这将是应用程序中的第一个函数。其他一切都是对象的方法。希望我已经提供了有
所以,我今天一直在阅读PHP在线手册上的异常,并意识到我还没有理解finally关键字的目的或真正必要性。我在这里阅读了一些帖子,所以我的问题略有不同。我明白我们可以这样使用finally:functionhi(){return'Hi';}try{thrownewLogicException("Throwlogic\n");}catch(InvalidArgumentException$e){echo$e->getMessage();}echohi();输出:Fatalerror:UncaughtLogicException:ThrowLogicinC:\Users\...a.php:
所以,我今天一直在阅读PHP在线手册上的异常,并意识到我还没有理解finally关键字的目的或真正必要性。我在这里阅读了一些帖子,所以我的问题略有不同。我明白我们可以这样使用finally:functionhi(){return'Hi';}try{thrownewLogicException("Throwlogic\n");}catch(InvalidArgumentException$e){echo$e->getMessage();}echohi();输出:Fatalerror:UncaughtLogicException:ThrowLogicinC:\Users\...a.php:
我正在使用以下脚本来使用PHP使用数据库:try{$db=newPDO('mysql:host='.$host.';port='.$port.';dbname='.$db,$user,$pass,$options);}catch(Exception$e){$GLOBALS['errors'][]=$e;}现在,我想使用这个数据库句柄来使用这个代码做一个请求:try{$query=$db->prepare("INSERTINTOusers(...)VALUES(...);");$query->execute(array('...'=>$...,'...'=>$...));}catch(E
我正在使用以下脚本来使用PHP使用数据库:try{$db=newPDO('mysql:host='.$host.';port='.$port.';dbname='.$db,$user,$pass,$options);}catch(Exception$e){$GLOBALS['errors'][]=$e;}现在,我想使用这个数据库句柄来使用这个代码做一个请求:try{$query=$db->prepare("INSERTINTOusers(...)VALUES(...);");$query->execute(array('...'=>$...,'...'=>$...));}catch(E
考虑这两个例子getMessage();}some_code();//Morearbitrarycode?>和getMessage();}finally{some_code();}//Morearbitrarycode?>有什么区别?是否存在第一个示例不执行some_code()而第二个示例执行的情况?我完全没有捕获重点吗? 最佳答案 如果您捕获Exception(任何异常),则两个代码示例是等效的。但是如果你只在你的类block中处理一些特定的异常类型并且发生了另一种异常,那么some_code();只有在你有一个finallyb