Error handling Swift 3:使用if条件处理自定义错误

Error handling Swift 3:使用if条件处理自定义错误,error-handling,swift3,Error Handling,Swift3,我对在Swift 3中抛出自定义异常感到有点困惑 在C++中,我可以这样做,以立即停止方法中的过程,抛出错误并处理它而不继续进行下去。 void foo() { try { if (a > b) { throw MyException(); } DoOtherStaff(); } catch (const MyException& e) { HandleError();

我对在Swift 3中抛出自定义异常感到有点困惑

在C++中,我可以这样做,以立即停止方法中的过程,抛出错误并处理它而不继续进行下去。
void foo()
{
   try
   {
      if (a > b)
      {
         throw MyException();
      }

      DoOtherStaff();
   }
   catch (const MyException& e)
   {
      HandleError();
   }
}
我正试图在Swift 3中实现类似的功能

enum MyError : Error
{
   case myError(String)
}

func foo()
{
   do
   {
      if (a > b)
      {
         throw MyError.myError("My error message");
      }

      DoOtherStaff();
   }
   catch
   {
      HandleError();
   }
}
但它告诉我,错误没有得到处理,因为所包含的捕获并非详尽无遗。有办法处理吗

谢谢大家!

您显示的代码没有先天错误。作为证明,只需将以下内容复制并粘贴到操场(或实际项目中的
定义中):


它在操场上编译并运行良好(尽管它当然没有任何作用)。请注意,我所做的与你所给的代码不同,就是“填空”,即提供你所提到的所有术语的声明。< /P>这不是C++,所以请停止使用函数名称的大写字母!谢谢也请丢掉分号。谢谢。我想我已经发现了错误。我正在传输代码,但仍然有
catch(const MyError&e)
。我真蠢。。。。
enum MyError : Error {
    case myError(String)
}
let a = 1
let b = 2
func foo() {
    do {
        if a > b {
            throw MyError.myError("My error message")
        }
        doOtherStuff()
    }
    catch {
        handleError()
    }
}
func doOtherStuff() {}
func handleError() {}