gpt4 book ai didi

swift - 如何为 completionHandler 引发错误?

转载 作者:行者123 更新时间:2023-11-28 07:53:09 25 4
gpt4 key购买 nike

我正在对 completionHandler 抛出错误的情况进行单元测试。但我不确定如何提出该错误。

class MockErrorSession: URLSessionProtocol {
var nextDataTask = MockURLSessionDataTask()
var nextData: Data?
var nextError: Error?

func dataTask(with request: NSURLRequest, completionHandler: @escaping DataTaskResult) -> URLSessionDataTaskProtocol {

nextError = ?

completionHandler(nextData, successHttpURLResponse(request: request), nextError)
return nextDataTask as URLSessionDataTaskProtocol
}
}

我需要以某种方式填充 nextError

我试过了,

enum MyError : Error {
case RuntimeError(String)
}

func throwError(_ message: String) throws {
throw MyError.RuntimeError(message)
}

nextError = try throwError("test") as! Error

有什么建议吗?

最佳答案

你的函数 dataTask(with:completionHandler:) 似乎没有用 throws/rethrows 标记,在这种情况下似乎是错误只是被传递给完成 block 。

因为函数和闭包都不是“throws”,所以你不能throw错误,因此你也不能-try-catch 无论如何稍后再进行。

所以根据我的假设,只需以下内容就足够了:

nextError = MyError.RuntimeError("test")

enum MyError : Error {
case RuntimeError(String)
}

func dataTask(with request: NSURLRequest,
completionHandler: @escaping DataTaskResult) -> URLSessionDataTaskProtocol {

nextError = MyError.RuntimeError("test")

completionHandler(nextData,
successHttpURLResponse(request: request),
nextError)

return nextDataTask as URLSessionDataTaskProtocol
}

关于swift - 如何为 completionHandler 引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49147902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com