Swift中如何知晓URLSession.shared.data会抛出Error?
首先在Swift里,一个方法会不会抛出错误,最直接的判断是看方法声明里的throws关键字——不管文档有没有写清楚,只要标了throws,就说明它可能抛出错误,必须用do-catch、try?或者try!来处理。
你用的URLSession.shared.data(for:)异步方法,完整签名是这样的:
func data(for request: URLRequest) async throws -> (Data, URLResponse)
这里的throws就是明确信号,告诉你这个方法会抛出错误。
至于文档没明确提可能抛出的错误类型,其实这类网络API抛出的错误基本都属于URLError枚举,像服务器不可用、连接失败、请求无效这些场景对应的错误都在里面。可能文档默认开发者知道URLSession相关的网络方法都会抛出这类通用错误,所以没特意列出来。
另外还有两个实操层面的确认方式:
- 看Xcode的代码提示:输入方法调用时,Xcode会显示完整的方法签名,里面能看到
throws。 - 看编译器报错:如果不用
try去调用这个方法,编译器直接会报错,逼着你处理错误,这也是很直白的提示。
说白了,Swift里判断方法是否抛错,优先看方法签名的throws关键字,这是语言层面的硬性约定,比文档描述更靠谱。
内容的提问来源于stack exchange,提问作者Max B
相关产品推荐
相关产品推荐

