草庐IT

Try-finally

全部标签

exception - Swift 中的 try-catch 异常

这个问题在这里已经有了答案:Error-HandlinginSwift-Language(13个答案)关闭8年前。是否可以在Swift中捕获异常?给定以下代码:NSException.raise(NSRangeException,format:"Nowyou'vegonetoofar!",arguments:CVaListPointer(fromUnsafePointer:UnsafePointer()))是否可以防止异常导致整个程序崩溃?也就是说,在Swift中Objective-C中的以下内容是什么:@try{[NSExceptionraise:NSRangeExceptionfo

ios - 在 Swift 3 中处理 try 和 throws

在Swift3之前,我使用的是:guardletdata=Data(contentsOf:url)else{print("Therewasanerror!)return}但是我现在必须使用do、try和catch。我不熟悉这种语法。我将如何复制这种行为? 最佳答案 这里的区别在于Data(contentsOf:url)不再返回Optional,而是抛出。所以你可以在没有guard的情况下在Do-Catch中使用它:do{letdata=tryData(contentsOf:url)//dosomethingwithdata//ift

swift - Swift 1.2 中的声明不能同时是 'final' 和 'dynamic' 错误

下面value的声明importFoundationclassAAA:NSObject{functest2(){self.dynamicType}}extensionAAA{staticletvalue=111}导致如下编译错误Adeclarationcannotbeboth'final'and'dynamic'为什么会发生这种情况,我该如何处理?我使用的是Swift1.2(Xcode6.3.16D1002中附带的版本) 最佳答案 出现此问题是因为Swift试图为静态属性生成一个动态访问器以实现Obj-C兼容性,因为该类继承自NSO

c# - C# using 语句执行 try/finally 吗?

假设我有以下代码:privatevoidUpdateDB(QuoteDataSetdataSet,StrinttableName){using(SQLiteConnectionconn=newSQLiteConnection(_connectionString)){conn.Open();using(SQLiteTransactiontransaction=conn.BeginTransaction()){using(SQLiteCommandcmd=newSQLiteCommand("SELECT*FROM"+tableName,conn)){using(SQLiteDataAdap

C# 嵌套 Try Catch 语句或方法?

简单的最佳实践问题。你应该嵌套trycatch语句还是只使用方法。例如,如果您有一个打开文件的方法确实有效并关闭了文件,您将在trycatch之外进行打开和关闭,或者更确切地说,在finallyblock中进行关闭。现在,如果您的open方法失败,该方法会断言吗?那么你应该将它包装在一个trycatchblock中,还是应该从另一个方法调用,而这个方法又作为一个trycatchblock? 最佳答案 在打开文件的方法的上下文中,我会使用using语句而不是trycatch。using语句确保在发生异常时调用Dispose。using

c# - 为什么 main() 中的 try-catch 不好?

有人可以向我解释为什么在main()方法中使用try-catch来捕获任何未处理的异常被认为是不合适的吗?[STAThread]staticvoidMain(){try{Application.Run(newForm1());}catch(Exceptione){MessageBox.Show("Generalerror:"+e.ToString());}}我知道这是不好的做法,但不确定为什么。 最佳答案 我不认为它一定是不好的做法。然而,有一些注意事项......我相信无论谁称此为“不良做法”,其目的都是为了强化这样一种观念,即您

c# - 异步 CTP 和 "finally"

代码如下:staticclassAsyncFinally{staticasyncTaskFunc(intn){try{Console.WriteLine("Func:Begin#{0}",n);awaitTaskEx.Delay(100);Console.WriteLine("Func:End#{0}",n);return0;}finally{Console.WriteLine("Func:Finally#{0}",n);}}staticasyncTaskConsumer(){for(inti=1;i这是输出:Consumer:beforeawait#1Func:Begin#1Func

c# - C# try-finally CERs 会在迭代器中中断吗?

显然,受限执行区域保证不适用于迭代器(可能是因为它们是如何实现的),但这是一个错误还是设计使然?[参见下面的示例。]即与迭代器一起使用CER的规则是什么?usingSystem.Runtime.CompilerServices;usingSystem.Runtime.ConstrainedExecution;classProgram{staticboolcerWorked;staticvoidMain(string[]args){try{cerWorked=true;foreach(varvinIterate()){}}catch{System.Console.WriteLine(ce

c# - try/catch/finally 中 "finally"的用途是什么

语法会因语言而异,但这是一个普遍的问题。这有什么区别....try{Console.WriteLine("Executingthetrystatement.");thrownewNullReferenceException();}catch(NullReferenceExceptione){Console.WriteLine("{0}Caughtexception#1.",e);}finally{Console.WriteLine("Executingfinallyblock.");}还有这个....try{Console.WriteLine("Executingthetrystate

c# - 关于在 C# 中制作可重用的 try/catch block 的建议?

我有一个类,其中包含大约20多个方法。每个都进行一些Web服务消息处理。我只需要对其进行更改,并意识到这些方法中的每一个都有完全相同的try/catch:try{/****actualprocessingspecifictoeachmethodgoeshere****/}catch(FaultExceptioncfex){//commonstuff}catch(CustomExceptioncfex){//commonstuff}catch(Exceptionex){//commonstuff}finally{FinalizeServiceCall(wsBus,wsMessage,re