草庐IT

c# - 如何摆脱try catch?

我厌倦了像这样的trycatch周围的代码..try{//someboringstuff}catch(Exceptionex){//somethingevenmoreboringstuff}我想要这样的东西SurroundWithTryCatch(MyMethod)我知道我可以通过创建一个具有函数的确切签名的委托(delegate)来完成此行为,但是为我的应用程序中的所有方法创建一个委托(delegate)这不是一个选项。我也可以通过注入(inject)IL代码来做到这一点,但这在性能方面很昂贵,因为它会在我的周围创建一个包装程序集。还有其他有效的想法吗?

C# try catch 模式帮助

我们总是需要在我们的代码中尝试catch,它变得很丑publicvoidfoo(){try{DoSomething();}catch(Exceptione){//dowhateverwithe}}publicintFooReturnInt(){try{returnIntAfterSomeCalculation();}catch(Exceptione){//doexactlywhateverwitheasfoo()}}假设我们有一个巨大的类,其中包含许多这样的公共(public)函数,我们必须在每个函数中应用相同的trycatch。理想情况下,因为trycatch部分是相同的,我们可以将

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# - 如何避免重复的 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中,并且可以在调用对象析构函数时关闭连接,但这对我来说似乎很粗略。据我所知,您不能指望在发生异常时调