最近很多人指责我只提到了一个词——“goto”。这让我想知道,为什么它被认为是一个如此讨厌的词。我知道之前有几次关于该主题的讨论,但它并不能说服我-someoftheanswersjustsays"it'sbad"noteventryingtoexplain还有一些带来reasons,irrelevantforscriptinglanguageslikePHP,IMO.无论如何,我要问一个非常特殊的问题:让我们比较一下goto和throw语句。在我看来,两者都做同样的事情:根据某些条件避免执行某些代码部分。如果是这样-throw和goto有同样的缺点吗?(如果有的话)?如果不是-那么区
假设在try...catchblock中有一段PHP代码。假设在catch中您想要做一些可能会失败并抛出新异常的事情(例如发送电子邮件)。try{//somethingbadhappensthrownewException('Exception1');}catch(Exception$e){//somethingbadhappensalsoherethrownewException('Exception2');}在catchblock中处理异常的正确(最佳)方法是什么? 最佳答案 基于thisanswer,嵌套try/catchbl
我正在尝试将异常从特定的catchblock传递到更通用的catchblock。但是它似乎没有用。当我尝试以下操作时出现500服务器错误。这可能吗?我知道有一些简单的解决方法,但是说“嘿,我不想处理这个错误,让我们用更通用的异常处理程序来处理吧!”这不是很正常吗?try{//somesoapstuff}catch(SoapFault$sf){thrownewException('SoapFault');}catch(Exception$e){echo$e->getMessage();} 最佳答案 从技术上讲,这就是您要查找的内容:t
我正在使用Slim编写RESTAPI。我编写了一个小型中间件来保护资源,因此只有经过身份验证的用户才能访问它们:resource=$resource;}publicfunctioncall(){//getareferencetoapplication$app=$this->app;//skiproutesthatareexceptionallyallowedwithoutanaccesstoken:$publicRoutes=["/","/login","/about"];if(in_array($app->request()->getPathInfo(),publicRoutes))
我尝试了几种不同的try/catch循环来尝试自动解决问题,但它们似乎总是导致软件死机。$doLoop=true;while($doLoop){try{//doathinginsertIntoDb($data);}catch(Exception$e){//tryagaininsertIntoDb($data);//writeerrortofilewriteError($e);}}这是我原来的try/catch。问题有时是MySQL服务器“消失”,我需要捕获该异常并不断重试,直到它恢复。我可以在这里更改什么以使其不断重试直到成功? 最佳答案
我正在使用PHP和CodeIgniter框架。我读过一些文章,指出使用try/catch方法是不好的做法。我了解在可能发生潜在错误时在开发中使用日志记录并让实际错误发生然后使用log_message('level','message')但是在部署时,您希望抑制和处理出现的任何错误。我是否应该使用try/catchblock,例如在...try{$this->data['important']=$this->Test_Model->do_something($data);if(empty(data['important'])){thrownewException('nodataretur
情况://trollCommand.php[...]foreach($trolltypesas$type){//$type=={"Frost","RandomBroken","Forest"}try{$output->writeln($type);$troll={"get".$type."TrollType"}();$output->writeln("TEST1");$troll->__load();$output->writeln("TEST2");}catch(EntityNotFoundException$e){$output->writeln("WARNING:TROLLENT
你好,我有这样的代码:try{//HereIcallmyexternalfunctiondo_some_work()}catch(Exception$e){}问题是:如果do_some_work()有问题并产生错误,这个trycatch会隐藏错误吗? 最佳答案 PHP中有两种类型的错误。有异常(exception),也有错误。try..catch将处理异常,但不会处理错误。为了捕获PHP错误,您需要使用set_error_handler()function.简化事情的一种方法可能是让set_error_handler()在遇到错误时
简单的问题,但似乎找不到答案。如果我有一个php类,是否可以为整个类注册一个异常处理程序?我想这样做的原因是我的类使用的对象是我的领域模型的一部分。这些对象的方法抛出非常明确的异常。我不希望这些异常冒泡到更高级别的类,而是想捕获所有这些异常并将它们作为更一般的异常抛出,例如域层异常因此,我希望我的类(class)中有一个区域可以捕获我从我的域模型中定义的任意数量的异常列表,并将它们作为更一般的异常抛出,例如目前我这样做的方法是将对域对象的方法调用包装在trycatchblock中。随着我使用越来越多的域对象及其方法,这变得非常困惑。删除这些trycatchblock并在类中的一个位置处
这在PHP中可行吗?try{$obj=newClas();if($obj->foo){//howtoexitfromthistryblock?}//dootherstuffhere}catch(Exception$e){}我知道我可以将其他内容放在{}之间,但这会增加更大代码块上的缩进,我不喜欢它:P 最佳答案 用goto当然!try{$obj=newClas();if($obj->foo){gotobreak_free_of_try;}//dootherstuffhere}catch(Exception$e){}break_fre