当前位置: 首页 > 面试题库 >

一种忽略方法抛出的任何错误的优雅方法

陈实
2023-03-14
问题内容

我正在使用NSFileManager这样删除一个临时文件:

let fm = NSFileManager()
fm.removeItemAtURL(fileURL)
// error: "Call can throw but it is not marked with 'try'"

我并不在乎在进行呼叫时文件是否在那里以及是否已被删除,就这样吧。

告诉Swift不使用忽略任何抛出的错误的绝佳方法是do/catch什么?


问题答案:

如果您不关心成功与否,可以致电

let fm = NSFileManager.defaultManager()
_ = try? fm.removeItemAtURL(fileURL)

从Swift文档中的“错误处理”中:

您可以try?通过将错误转换为可选值来处理错误。如果在评估try?表达式时抛出错误,则表达式的值为nil

所述removeItemAtURL()返回“无”(又名Void),所以返回值try?表达Optional<Void>。分配此返回值可_避免
_“尝试”结果。 未使用”_警告。

如果你只关心呼叫的结果,但不是在被抛出,那么你可以测试的返回值的具体错误try?打击nil

if (try? fm.removeItemAtURL(fileURL)) == nil {
    print("failed")
}

更新:Swift 3(Xcode 8)开始, 您不需要虚拟分配,至少在这种情况下不需要:

let fileURL = URL(fileURLWithPath: "/path/to/file")
let fm = FileManager.default
try? fm.removeItem(at: fileURL)

编译时不发出警告。



 类似资料:
  • 问题内容: 经过大量搜索,我发现有几种方法可以向现有实例对象添加绑定方法或未绑定类方法 此类方法包括以下代码采用的方法。 让我烦恼的是,输入该函数的名称,或两次。 有什么简单的方法可以将现有功能添加到类或实例中,而无需再次键入该功能的名称? 例如, 将现有功能添加到实例或类将是一种非常优雅的方法,因为该功能已经具有属性。 问题答案: 通常,当您使用点分访问查找对象字典时,存储在对象字典中的函数不会

  • 本文向大家介绍详解Springboot 优雅停止服务的几种方法,包括了详解Springboot 优雅停止服务的几种方法的使用技巧和注意事项,需要的朋友参考一下 在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。 我们很多时候都需要安全的将服务停止,

  • 问题内容: 假设我在变量中有两个日期,例如 我需要获取介于和()之间的月份数。即我需要得到。 有没有一种方法可以通过使用日期函数来获取它,或者我必须爆炸字符串并进行一些计算? 非常感谢 问题答案: 对于PHP> = 5.3 DateTime :: diff返回一个DateInterval对象 如果您未使用PHP 5.3或更高版本运行,我想您将不得不使用unix时间戳: 但这不是很精确(每月并不总是

  • 问题内容: 这个问题本质上是相反的这一个 我有这样的方法: 当我加载它时,Hibernate抱怨我没有称为的属性。但是我不想要一个叫做-我不需要存储数据的属性-这仅仅是逻辑。 hibernate状态: org.hibernate.PropertyNotFoundException:在com.mycomp.myclass类中找不到空置属性的设置器… 我可以在方法中添加注释以使Hibernate忽略它

  • 我有一个如下所示的dataframe,但我真正的dataframe有数百万行 我想查找每24小时执行测试的次数(使用测试列标识

  • 本文向大家介绍Java 如何优雅的抛出业务异常,包括了Java 如何优雅的抛出业务异常的使用技巧和注意事项,需要的朋友参考一下   记得上学的时候学习英语,每个英语老师说到英语翻译的时候都会说英语翻译要做到“信、达、雅”。如今做了一名程序员竟然体会我还是想用这三种境界来要求自己,恰逢自己现在所做之项目偏业务,代码的优雅显得格外重要。所以我就想写点这方面的东西,今天就先来说说如何优雅的抛出业务异常。