在Java中,如果一个方法抛出错误,则调用它的方法可以将其传递给下一个方法。
public void foo() throws Exception { throw new Exception(); } public void bar() throws Exception { foo(); } public static void main(String args[]) { try { bar(); } catch(Exception e) { System.out.println("Error"); } }
我正在迅速编写一个应用程序,并且希望做同样的事情。这可能吗?如果不可能,还有哪些其他可能的解决方案?我进行调用的原始函数具有此结构。
func convert(name: String) throws -> String { }
参考Swift- 错误处理文档,您应该:
1- 通过声明符合错误协议的 枚举 来创建自定义错误类型:
enum CustomError: Error { case error01 }
2- 声明foo()为可抛出函数:
foo()
func foo() throws { throw CustomError.error01 }
3- 声明bar()为throwable函数:
bar()
func bar() throws { try foo() }
需要注意的是,虽然bar()是抛出(throws),它并 没有 包含throw,为什么呢?因为它调用foo()(这也是一个引发错误的函数)的调用try方式是-将隐式地- 抛出该异常foo()。
throws
throw
try
为了更清楚一点:
4- 实施test()功能(抓捕):
test()
func test() { do { try bar() } catch { print("\(error) has been caught!") } }
5- 通话test()功能:
test() // error01 has been caught!
如您所见,bar()自动引发错误,这是指foo()函数错误引发。