有没有办法在swift中构建异常层次结构?
我想在swift中建立错误的层次结构,以便能够捕获我的一些错误,并将其余错误作为基本错误,有什么方法可以做到这一点吗 例如C++中我可以做这样的事情:< /P>有没有办法在swift中构建异常层次结构?,swift,exception,Swift,Exception,我想在swift中建立错误的层次结构,以便能够捕获我的一些错误,并将其余错误作为基本错误,有什么方法可以做到这一点吗 例如C++中我可以做这样的事情:< /P> class BaseException: public std::exception {} class Exception1 : public BaseException {} class Exception2 : public BaseException {} void someMethod { try { doS
class BaseException: public std::exception {}
class Exception1 : public BaseException {}
class Exception2 : public BaseException {}
void someMethod {
try {
doSomethingThrowing()
}
catch( const Exception1& ex ) {}
catch( const BaseException& ex ) { /*I'll get there even if Exception2 was thrown*/}
}
据我所知,在swift中,我必须抛出一些实现错误协议的东西,但到目前为止,我发现的所有示例都是以枚举和文档的形式实现该协议的。
有可能这样做吗
struct BaseException: Error {}
struct Exception1: BaseException {}
struct Exception2: BaseException {}
func someThrowingFunction() throws {}
do {
try someThrowingFunction()
}
catch Exception1 {}
catch BaseException {}
或者catch模式中是否应该有一些值,因此我必须捕获抛出以捕获它的Exception1的相同示例,而我将无法将Exception2作为BaseException捕获?下一个代码在Swift中运行良好(请记住,Swift结构不能使用继承):
class BaseException: Error {}
class Exception1: BaseException {}
class Exception2: BaseException {}
do {
throw Exception1()
}
catch is BaseException {
print("BaseException caught")
}