有没有办法在swift中构建异常层次结构?

有没有办法在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

我想在swift中建立错误的层次结构,以便能够捕获我的一些错误,并将其余错误作为基本错误,有什么方法可以做到这一点吗

例如C++中我可以做这样的事情:< /P>
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")
}