草庐IT

try_lock

全部标签

c# - 空测试与 try catch

有没有人有关于执行null测试与在trycatch中包装代码的指标?我怀疑零测试更有效,但我没有任何经验数据。环境为C#/.net3.x,代码对比为:Dudex=(Dude)Session["xxxx"];x=x==null?newDude():x;对比Dudex=null;try{x=(Dude)Session["xxxx"];x.something();}catch{x=newDude();}在trycatch中包装有什么优势吗? 最佳答案 如果null是一个可能的预期值,则测试null。如果你不喜欢null测试并且有默认值,你

C# 并非所有代码路径都返回一个值 try catch

我很难弄清楚如何使用以下代码解决该错误。在下面的这种情况下,我想将catch中的数据表返回为null。publicstaticDataTableDTTable(stringmysqlQuery,outDataTableDTTableTable){try{MySqlDataAdapterDataDTTables=newMySqlDataAdapter(mysqlQuery,Connection);DataDTTables.SelectCommand.CommandTimeout=240000;DataTableDataDTTablesDT=newDataTable();DataDTTab

c# - 特定于 Try/Catch

作为编程的新手,我刚刚发现您可以专门捕获某些类型的错误并将代码仅绑定(bind)到该类型的错误。我一直在研究这个主题,但我不太明白语法,例如catch(InvalidCastExceptione){}我知道InvalidCastException是正在处理的错误类型,但是我不确定e是什么。有人可以解释一下吗? 最佳答案 假设没有e。您将如何获取异常消息?名称e(或任何其他名称)用于获取异常对象的句柄,以便您可以从中提取信息。不给出任何名称是合法语法:catch(InvalidCastException)//legalC#这行得通,但

用 try - catch 包围的 C# 属性

我发现自己用try{stuff}catch(Exceptione){log,otherstuff}编写方法时有点放弃,所以我想弄清楚如何制作一个属性来帮助我。我已经非常广泛地检查了以下线程,但似乎无法让我的实现正常工作。attributedoesnotseemtoactatallASP.NETMVCController.OnExceptionnotbeingcalled.netAttributesthathandleexceptions-usageonapropertyaccessor我的顶级web.config设置为我正在非Debug模式下编译。我的属性如下:[AttributeUs

c# - Visual Studio 变得疯狂 : 'The directory name is invalid' error when trying to compile

出于一些非常奇怪的原因,我的VisualStudio2008在尝试编译C#项目时尝试将可执行文件的输出写入与可执行文件同名的目录,至少看起来这就是错误所在消息暗示。在我的任何项目上运行编译后,CSC.EXE报告以下编译器错误:Couldnotwritetooutputfile'D:\Projects\Examples\StringBuilderVsString\obj\Release\StringBuilderVsString.exe'--'Thedirectorynameisinvalid.'当我查看obj\Release或obj\Debug时,所有中间资源(如StringBuild

c# - lock() 语句会阻塞进程/应用程序域中的所有线程吗?

也许这个问题听起来很愚蠢,但我不明白“关于线程和锁定的一些事情,我想得到确认(here'swhyIask)”。因此,如果我有10台服务器并且同时有10个请求到达每个服务器,那么整个服务器场就有100个请求。如果没有锁定,那就是对数据库的100个请求。如果我这样做:privatestaticreadonlyobjectmyLockHolder=newobject();if(Cache[key]==null){lock(myLockHolder){if(Cache[key]==null){Cache[key]=LengthyDatabaseCall();}}}我将执行多少数据库请求?10?

c# - 如何避免重复的 try catch block

我有几个看起来像这样的方法:publicvoidfoo(){try{doSomething();}catch(Exceptione){Log.Error(e);}}我可以把代码改成这样吗?[LogException()]publicvoidfoo(){doSomething();}如何实现这个自定义属性?这样做的利弊是什么?-----编辑1------------我可以自己实现吗,我的意思是只写一个类,还是我需要使用postsharp或其他解决方案? 最佳答案 您可以使用委托(delegate)和lambda:privatevoid

c# - 使用 Mono Cecil 添加 try-catch

我正在使用MonoCecil在另一个方法中注入(inject)代码。我想在我的代码周围添加一个Try-Catchblock。所以我写了一个带有trycatchblock的HelloWorld.exe并反编译了它。在Reflector中的Try-Catch看起来像这样:.tryL_0001toL_0036catch[mscorlib]System.ExceptionhandlerL_0036toL_003b如何通过monocecil注入(inject)这样的trycatch? 最佳答案 使用Mono.Cecil添加异常处理程序并不困难

c# - 是否出于与 Try-Catch 相同的原因而谨慎使用 Try-Finally?

我刚看完thisarticle关于异常的优点和缺点,我同意Try-Catchblock不应该用于“正常”控制流管理的观点(不要像goto一样使用它们)。然而,一位作者提出了关于可维护性,尤其是性能的(好的)观点,这让我对Try-Finallyblock中的同一件事感到疑惑。我在我的ASP.NET应用程序中用Try包围每个连接打开事件,这样我就可以确保在Finally中关闭连接。泄漏连接在网络应用程序中显然不是一件好事,我怀疑我会改变这种做法,但你有什么想法?注意:我确实将连接包装在DAL中,并且可以在调用对象析构函数时关闭连接,但这对我来说似乎很粗略。据我所知,您不能指望在发生异常时调

c# - 如果你跳出 Lock() 语句会发生什么?

我正在编写一个程序来监听传入的TcpClient并在数据到达时处理数据。Listen()方法在组件内的单独线程上运行,因此它需要是线程安全的。如果我在lock()语句中break跳出dowhile循环,锁定被释放?如果没有,我该如何实现?谢谢!(也欢迎就异步TCP套接字主题提出任何其他建议。)privatevoidListen(){do{lock(_clientLock){if(!_client.Connected)break;lock(_stateLock){if(!_listening)break;if(_client.GetStream().DataAvailable)Handl