草庐IT

final_report

全部标签

c# - 使用 finally 而不是 catch

我已经见过几次这种模式了:boolsuccess=false;try{DoSomething();success=true;}finally{if(!success)Rollback();}我一直在想:为什么这比使用catch进行回滚更好?try{DoSomething();}catch{Rollback();throw;}这两种确保更改在失败时回滚的方法有什么区别? 最佳答案 我在这里发布了一些代码,即使它与问题并没有真正相关(稍后会删除)。有了这个程序:usingSystem;namespacetestcs{classProgr

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

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

c# - 在 C# 中,finally block 之前有一个 catch-all catch block 有什么用?

考虑以下C#代码结构(S0-S3是任意代码块的占位符):try{S0;}catch(Exceptionex){S1;}finally{S2;}S3;如果S1在catch处理程序中抛出异常,finally中的S2仍将执行(但S3不会)。问题假设S1不能抛出,将S2放在finallyblock内而不是将它放在try/catch/finally之外,就在S3之前是否有任何意义?例子try{//Dosomethingthatmightthrow}catch(Exceptionex){//Savetheexceptiontore-throwlater//NB:Thisstatementcanno

c# - 为什么 Finalize/Destructor 示例在 .NET Core 中不起作用?

我正在尝试了解终结和析构函数在C#中的工作方式,我尝试运行System.Object.Finalize中的代码示例(代码复制粘贴,未做任何更改),但输出与预期的不一样,它表明从未调用过析构函数。代码是:usingSystem;usingSystem.Diagnostics;publicclassExampleClass{Stopwatchsw;publicExampleClass(){sw=Stopwatch.StartNew();Console.WriteLine("Instantiatedobject");}publicvoidShowDuration(){Console.Writ

c# - 什么时候用什么时候不用 Try Catch Finally

我正在.net3.5中创建asp.netweb应用程序,我想知道何时使用以及何时不使用TryCatchFinallyblock?特别是,我的大部分trycatch都围绕着执行存储过程和填充文本字段或GridView?当您执行存储过程并填充数据显示控件时,您会EVERYTIME使用TryCatch吗?我的代码块通常是这样的:protectedvoidAddNewRecord(){try{//executestoredproc//populategridviewcontrolsortextboxes}catch(Exceptionex){//displayamessageboxtouser

c# - 使用 Reporting Services 将组保持在一页上

我使用ReportingServices创建了一个报表作为C#应用程序的一部分,但我找不到我在其他环境中经常看到的一些功能。我相信MSAccess和Crystal报表都有一个名为“KeepTogether”的选项,这样您就可以在一页上保留一组特定的数据,而不是将信息分成两页。当我的报告在C#应用程序中本地呈现并使用.net报告查看器查看时,我如何使用2005ReportingServices来做到这一点。本质上,我想将某一年的所有记录保存在一页上。我正在使用VisualStudio2008。年份是列之一,一年的行数总是小于一页。我的报告只使用一个表格,最里面按年份分组,然后按客户名称分

c# - 如何将非表数据导入 SQL Server Reporting Services?

给定:一个C#计算引擎,它加载一个对象模型,处理大量数字,并将结果保存到SQLServer中的几个巨大的索引数据库表中。这些表向Web界面、其他软件模块和SQLServerReportingServices2005报告提供数据。在最新版本的软件中,我设法使引擎的速度快了很多,现在已经足够快了,它可以根据请求提供数据-有时甚至比查询所需的时间还快预先计算的数字的数据库。我对此感到非常高兴。这一突破意味着我们可以根据Web界面和其他软件模块的请求生成数据。但是缓存表还不能消亡,因为它们被SSRS报告使用(或者更具体地说,被查询表并向SSRS提供数据的存储过程使用。)缓存表是一种痛苦,就像任

c# - 在 try & catch 中返回与在 finally 中返回?

其中任何一个都有风险吗?一个更好吗?或者它是您打印出来并throw飞镖来决定的那些东西之一?既然我了解了finally的工作原理,我就想这样做:try{stuffthatchangessomething...}catch(System.Exceptionex){something.worked=false;something.err=ex.Message;}finally{stuff.close();returnsomething;}但我见过:try{stuffthatchangessomething...returnsomething;}catch(System.Exceptione

c# - Crystal Reports ApplyLogOnInfo 从不工作

目前,我厌倦了尝试在CrystalReports中解决这个问题。我们有3个环境,开发,生产部署(共享)和本地计算机。如果我不完全匹配开发中的生产环境,CrystalReports永远不会显示报告。我通过所有论坛进行了大量研究,并尝试了每一个解决方案。不管我尝试什么,当我尝试应用新的登录信息时它永远不会起作用,当我循环表以测试连接时它最终失败了:foreach(CrystalDecisions.CrystalReports.Engine.Tabletableindocument.Database.Tables){TableLogOnInfotableLogOnInfo=table.Log

c# - .NET 反编译器区分 "using"和 "try...finally"

给定以下C#代码,其中Dispose方法以两种不同的方式调用:classDisposable:IDisposable{publicvoidDispose(){}}classProgram{staticvoidMain(string[]args){using(vardisposable1=newDisposable()){Console.WriteLine("using");}vardisposable2=newDisposable();try{Console.WriteLine("try");}finally{if(disposable2!=null)((IDisposable)dis