我正在开发用户从UI调用方法的应用程序,在此我从调用另一个方法的业务类调用方法UI-->方法1-->方法2-->方法3如果任何方法发生异常,我想向用户显示错误消息。我是否应该直接将异常抛出给调用方方法,然后在UI层捕获异常并显示消息。除了抛出异常并在调用者处捕获外,还有更好的处理方法吗?我不想使用返回整数作为结果的C++约定。 最佳答案 如果你不能在发生异常的方法中从异常中恢复,不要试图捕获它(除非你想记录它,在这种情况下在记录后再次抛出它).然后在UI级别捕获。尝试在每个级别捕获异常只会让您的代码变得臃肿。
我需要您对此发表意见,因为我已经阅读了很多关于该主题的不同内容。如果你有List或类声明中的任何类型的列表,您是将其设为私有(private),然后使用特定方法添加或删除项目,还是将其设为公开?对于每个选项的任何缺点/优点,您的意见将不胜感激。举个例子,假设我们有一个classEmployer有私有(private)领域name和List.我的问题是,我们应该将员工名单设为私有(private)还是公开,以及这两种情况的优缺点是什么。 最佳答案 对于List明确是的,它应该是私有(private)的,具体取决于您公开的功能应该做什么
在一般情况下,接口(interface)或抽象类通常是合适的决定,对吗?但在某些情况下,具体类看起来更好。例如,publicstringReplace(stringold,stringnew)String的Replace方法返回一个具体类。(这只是一个例子,虽然String没有实现任何接口(interface)。)我的问题是什么时候返回接口(interface),什么时候返回具体类?它是返回接口(interface)的程序的一部分,而不是实现吗? 最佳答案 视情况而定。这个问题我已经看过好几次了,这里有一个很好的例子来说明“视情况而
在阅读了所有有关依赖注入(inject)和IoC的内容之后,我决定尝试在我们的应用程序中使用WindsorContainer(这是一个50KLOC多层Web应用程序,所以我希望这不是一个过大的杀伤力)。我使用了一个简单的静态类来包装容器,并在启动应用程序时对其进行了初始化,目前效果很好。我的问题是关于单元测试的。我知道DI将使我的生活更轻松,因为它使我有可能将类协作者的stub/模拟实现注入(inject)到被测类中。我已经使用这种技术编写了几个测试,这对我来说似乎很有意义。我不确定的是我是否应该在单元测试中也使用IoC(在本例中为温莎城堡)(可能以某种方式将其配置为为我的特殊情况返回
我正在从事一个新项目,我注意到一些我不确定是否真实的代码。我用来证明问题的名称和值是假的。publicclassMyConsts//Shoulditbestatic?{publicconststringMyConst1="a";publicconststringMyConst2="b";publicconststringMyConst3="c";publicconststringMyConst4="d";....}按照我的逻辑,这个类(只包含常量值)应该是静态的,所以没有选项可以初始化它,这没有任何意义,我说得对吗?编辑:我在盲目编写代码,所以我混淆了string和const的顺序-因
假设我有一个接口(interface)方法实现为publicvoidDoSomething(Useruser){if(user.Gold>1000)ChatManager.Send(user,"Youarerich:"+user.Gold);}一段时间后我意识到我想改变它:publicasyncTaskDoSomething(Useruser){if(user.Gold>1000)ChatManager.Send(user,"Youarerich:"+user.Gold);if(!user.HasReward){using(vardbConnection=awaitDbPool.Ope
因为根据What'sthedifferencebetweenusing"let"and"var"todeclareavariable?,当在for循环中使用时,let关键字的范围比var小。这是否意味着在'for(vari=0...'的所有地方,实际正确的方法应该是使用let?我无法想象开发人员使用'for(vari=0......'会希望vari在for循环外仍然可见,这意味着所有'for(vari=0...'都是错误的,正确的方法是'for(leti=0...'?只是一个是或否的问题。functionallyIlliterate(){//tuceis*not*visibleouth
在阅读redux文档时我发现了这个:Still,youshoulddoyourbesttokeepthestateserializable.Don'tputanythinginsideitthatyoucan'teasilyturnintoJSON.所以我的问题是,保持状态可序列化有什么好处?或者,如果我将不可序列化的数据放入存储中,我可能会遇到什么困难?而且我相信这不是redux独有的-Flux,甚至React本地状态也暗示了同样的事情。为了让我清楚这里是一个例子。假设商店结构是这样的。{books:{1:{id:1,name:"Book1",author_id:4}},author
我的服务器正在向客户端发送数据。header('Content-type:application/json');echojson_encode($jsondata);页眉有什么好处?它对数据进行编码,但在我测试过的各种浏览器中似乎没有任何视觉效果。我还看到它破坏了文件上传插件(我认为是Valum,但不记得了)。最后,如果我的服务器只返回true/false(或1/0,或success/null),我还应该对响应进行编码吗?那么,回顾一下我的问题,什么时候以及为什么Content-Type应该是application/json? 最佳答案
当我在函数中硬编码数据时,我可以正常初始化变量:functioncheck_country(){$countries=array('aa','ab','ae',...);}PHP只是让$countries指向到内存中的文字数据还是复制所有初始化数据到一个新的ZVAL还是什么?如果它做的是后者,那么基本上等同于此,不是吗?functioncheck_country(){$countries=array();$countries[]='aa';$countries[]='ab';$countries[]='ae';}另一种方法是使变量成为静态变量并像这样对其进行初始化:functionch