微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Swift中向堆栈跟踪传递错误

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 – Error Handling Documentation,你应该:

1-通过声明符合Error Protocol的枚举来创建自定义错误类型:

enum CustomError: Error {
    case error01
}

2-将foo()声明为throwable函数

func foo() throws {
    throw CustomError.error01
}

3-将bar()声明为throwable函数

func bar() throws {
    try foo()
}

请注意,尽管bar()是throwable(throws),但它不包含throw,为什么?因为它调用foo()(它也是一个抛出错误函数),尝试意味着抛出将会明确地转到foo().

为了更清楚:

4-实现test()函数(Do-Catch):

func test() {
    do {
        try bar()
    } catch {
        print("\(error) has been caught!")
    }
}

5-调用test()函数

test() // error01 has been caught!

如您所见,bar()自动抛出错误,这是指foo()函数错误抛出.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐