我正在.net3.5中创建asp.netweb应用程序,我想知道何时使用以及何时不使用TryCatchFinallyblock?特别是,我的大部分trycatch都围绕着执行存储过程和填充文本字段或GridView?当您执行存储过程并填充数据显示控件时,您会EVERYTIME使用TryCatch吗?我的代码块通常是这样的:protectedvoidAddNewRecord(){try{//executestoredproc//populategridviewcontrolsortextboxes}catch(Exceptionex){//displayamessageboxtouser
其中任何一个都有风险吗?一个更好吗?或者它是您打印出来并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#代码,其中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
这个问题在这里已经有了答案:WillcodeinaFinallystatementfireifIreturnavalueinaTryblock?(12个答案)关闭7年前。我有以下代码:publicDataTableGetAllActiveUsers(){DataTabledataTable=newDataTable();try{connection.Open();SqlCommandgetAllActiveUsersCommand=newSqlCommand(getAllUsers,connection);SqlDataAdapterdataAdapter=newSqlDataAdap
这可能是一个重复的问题。但无法在搜索中找到它在java中,为了将方法参数标记为常量,我们将其声明为final等效的C#关键字是什么?喜欢publicvoiddoSomeThing(finalobjectmyObject){//printmyobject} 最佳答案 这在C#中是不可能的-无法将传入的参数标记为常量。如果您有一个const需要对许多函数可用,为什么不使用正确的作用域(类作用域或全局作用域,如果需要)声明它? 关于c#-在C#中将参数作为final传递,我们在StackOve
引自MSDN:如果Finalize或Finalize的重写抛出异常,运行时将忽略该异常,终止该Finalize方法,并继续完成过程。但如果我有:~Person(){thrownewException("meh");}然后它会导致运行时异常?附注我知道这永远不应该发生,但是我只是对这种行为感到好奇。我们的一个客户在他们所有的终结器周围都有一个空的trycatch。它甚至没有在出现问题或恢复对象时记录:/ 最佳答案 链接引用的来源很重要。我不得不假设它谈论的是旧版本的.NET,也许是1.x版。它试图“容忍”未处理的异常,不吱声地吞下它们
没有可用的内容! 最佳答案 是的,执行了finallyblock,但是流程离开了tryblock-无论是到达结尾、返回还是抛出异常。来自C#4规范,第8.10节:Thestatementsofafinallyblockarealwaysexecutedwhencontrolleavesatrystatement.Thisistruewhetherthecontroltransferoccursasaresultofnormalexecution,asaresultofexecutingabreak,continue,goto,orr
我想知道是否可以在finallyblock中获取函数的返回值。我有一些这样的代码。try{return1;}finally{//Getthevalue1}我知道可以通过添加一个可以保存返回值的变量来实现。但我想知道是否有可能以任何方式获得值(value)。谢谢 最佳答案 不,你不能那样做。 关于c#-在finallyblock中访问函数返回的值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques
我想使用TaskCompletionSource来包装MyService这是一个简单的服务:publicstaticTaskProcessAsync(MyServiceservice,intparameter){vartcs=newTaskCompletionSource();//EverytimeProccessAsynciscalledthisassignstoCompleted!service.Completed+=(sender,e)=>{tcs.SetResult(e.Result);};service.RunAsync(parameter);returntcs.Task;}
根据一些初步测试,它似乎确实如此,但我想知道的是它是否保证返回,或者在某些情况下是否不能返回?这对我的应用程序至关重要,但我还没有找到它不会返回的用例。我想获得有关该主题的专业知识。 最佳答案 其他答案中有许多不准确之处。当控制权正常离开tryblock时,控制权被传递到finallyblock——也就是说,通过return、goto、break、continue或简单地从末尾掉下来。当控制权离开tryblock时,控制权将通过已被封闭的catchblock捕获的异常传递给finallyblock。在任何其他情况下,都不能保证fin