草庐IT

swift - Swift 2.0 do-try-catch 和常规 Java/C#/C++ 异常有什么区别

似乎Swift2.0已经从传统的ObjC(返回NSError)和Swift1.X(成功/失败选项)约定的运行时错误处理改变为看起来非常类似于Java/C#等语言中的异常处理/C++/等Apple传统上有emphasizeduseofNSErrorinsteadofthrowingNSExceptionforruntimeerrors(与程序员错误相比),因为NSException堆栈展开可能会导致默认ObjC编译器设置的内存泄漏。然而,现在他们设计了一些看起来与传统异常非常相似的东西。我的问题是:除了术语(错误与异常)和语法(do-catch,而不是try-catch,尝试在方法调用之

ios - UIAlertController : UICollectionViewFlowLayout is not defined warning every time I try to bringup a UIAlertcontroller

我正在使用UIAlertController获取用户输入并更新表格单元格。每次当我尝试创建警报时,我都会在控制台中收到以下警告2015-11-1917:51:42.034SimpleTableView[5488:584215]thebehavioroftheUICollectionViewFlowLayoutisnotdefinedbecause:2015-11-1917:51:42.035SimpleTableView[5488:584215]theitemheightmustbelessthantheheightoftheUICollectionViewminusthesectio

swiftyjson - 调用可以抛出,但它被标记为 'try' 并且错误未被处理

我正在尝试使用swiftyjson,但出现错误:Callcanthrow,butitismarkedwith'try'andtheerrorisnothandled.我已经验证我的源JSON是好的。我一直在搜索,但找不到解决此问题的方法importFoundationclasslenderDetails{funcloadLender(){letlenders=""leturl=URL(string:lenders)!letsession=URLSession.shared.dataTask(with:url){(data,response,error)inguardletdata=da

swift 2 : Try/Catch a non-throwing function

我正在重构一个Obj-c类,其中在removeObserver:周围有一个@try/@catchblock。在swift中做同样的事情会触发警告,因为removeObserver可能会失败(当没有观察者时)但它不会抛出任何错误。知道如何实现相同的行为吗?编辑:我的代码:try{self.removeObserver(self,forKeyPath:"LineDisplayChanged")} 最佳答案 您调用的funcremoveObserver(_anObserver:NSObject,forKeyPathkeyPath:Stri

swift - 如何处理导致 "try?"的 Swift 的 "Result of try? is unused"?

这个问题在这里已经有了答案:Anelegantwaytoignoreanyerrorsthrownbyamethod(1个回答)关闭7年前。我想调用一些可以throw东西的方法。同时我不关心可能抛出的异常,我只想调用方法。但是,如果我尝试做这样的事情:try?managedObjectContext.save()我收到警告“尝试的结果?未使用”。在这种情况下我该怎么办?静音警告?如何?做这样的事情:leterror:NSError=try?managedObjectContext.save()?表达式变得两倍大,我得到未使用的常量。

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

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());}}我知道这是不好的做法,但不确定为什么。 最佳答案 我不认为它一定是不好的做法。然而,有一些注意事项......我相信无论谁称此为“不良做法”,其目的都是为了强化这样一种观念,即您