我看到有人说使用不带参数的catch是一种不好的形式,尤其是当catch什么都不做的时候:StreamReaderreader=newStreamReader("myfile.txt");try{inti=5/0;}catch//Noargs,soitwillcatchanyexception{}reader.Close();然而,这被认为是好的形式:StreamReaderreader=newStreamReader("myfile.txt");try{inti=5/0;}finally//Willexecutedespiteanyexception{reader.Close();}
在维护我同事的代码时,即使是自称是高级开发人员的人,我也经常看到以下代码:try{//dosomething}catch{//Donothing}或者有时他们将日志记录信息写入日志文件,例如以下trycatchblocktry{//dosomework}catch(Exceptionexception){WriteException2LogFile(exception);}我只是想知道他们所做的是否是最佳实践?这让我感到困惑,因为在我看来,用户应该知道系统发生了什么。 最佳答案 我的异常处理策略是:通过Hook到Applicatio
我正在为一位friend审查一些代码,并说他在try-finallyblock内使用了return语句。即使tryblock的其余部分没有触发,Finally部分中的代码是否仍然触发?例子:publicboolsomeMethod(){try{returntrue;thrownewException("test");//doesn'tseemtogetexecuted}finally{//codeinquestion}} 最佳答案 简单的回答:是的。 关于c#-如果我在Tryblock中
在与Microsoft员工进行代码审查时,我们发现try{}block中有一大段代码。她和一位IT代表建议这可能会影响代码的性能。事实上,他们建议大部分代码应该在try/catchblock之外,并且应该只检查重要的部分。微软员工补充说,即将发布的白皮书警告不要使用不正确的try/catchblock。我环顾四周,找到了它canaffectoptimizations,但它似乎只适用于范围之间共享变量的情况。我不是在问代码的可维护性,甚至不是在处理正确的异常(毫无疑问,有问题的代码需要重构)。我也不是指使用异常进行流量控制,这在大多数情况下显然是错误的。这些都是重要的问题(有些更重要),
我有一个常规的C#代码。我没有异常(exception)。我想以编程方式记录当前堆栈跟踪以用于调试目的。示例:publicvoidexecuteMethod(){logStackTrace();method();} 最佳答案 看看System.Diagnostics命名空间。里面有很多好东西!System.Diagnostics.StackTracet=newSystem.Diagnostics.StackTrace();深入了解幕后情况真是太好了。我建议您查看日志记录解决方案(例如NLog、log4net或Microsoft模式和
将代码放在try-catchblock中而不是执行各种错误检查会更快吗?例如..functiongetProjectTask(projectTaskId){if(YAHOO.lang.isUndefined(projectTaskId)||YAHOO.lang.isNull(projectTaskId)&&!YAHOO.lang.isNumber(projectTaskId)){returnnull;}varprojectPhaseId,projectPhaseIndex,projectTaskIndex,projectPhases,projectPhase,projectTask;i
当我使用JavaScript开发普通的Web应用程序时,通常不需要try/catch语句。没有checkedexception,JavaScript中的文件IO或数据库连接。try/catch语句在JavaScript中有用吗?我什么时候可以使用它? 最佳答案 try...catchblock通常鼓励少用,这与您使用的语言无关。主要原因是catchblock的成本。另一个原因是,当您用一个try...catchblock包装许多语句时,在catchblock中您无法确定主要问题到底是什么.最好使用输入验证或if...elsebloc
我错误地在函数中将参数重新声明为const而不是抛出SyntaxError:Identifier'bar'hasalreadybeendeclared我结束了与ReferenceError:barisnotdefined.。是什么导致了这种行为?这不是预期的错误,让我困惑了几分钟。示例代码:functionfoo(bar){try{console.log(bar);constbar=123;}catch(err){console.log(err)}}foo(456);如果我不将声明包装在try/catch中,我会得到(我认为是)预期的错误。 最佳答案
讨论here,函数定义可以在定义之前使用。但是一旦一段代码被包裹在一个tryblock中,情况就不再是这样了。这会显示“Helloworld”:hello();functionhello(){alert("Helloworld");}但这会显示“ReferenceError:helloisnotdefined”:try{hello();functionhello(){alert("Helloworld");}}catch(err){alert(err);}因此,在函数声明方面,tryblock显然有一些“特殊”之处。有什么办法可以避免这种行为? 最佳答案
我一直在为使用HTML5Rock的Slideshowcode的客户制作小型幻灯片/公开展示.我遇到了一个DOM异常12-一个据称与CSS选择器相关的语法错误-在四处闲逛时......但我无法追溯到我在代码中所做的任何更改。我想这可能是我添加功能时发现的东西。我已经追踪到这个对象(实时版本here):varSlideShow=function(slides){this._slides=(slides||[]).map(function(el,idx){returnnewSlide(el,idx);});varh=window.location.hash;try{this.current=