2017-01-25 9 views
-1

は、私はCでスウィフト3にスウィフト3:条件

をカスタム例外を投げると少し混乱していた場合にカスタムエラーを処理++、私はすぐに、この方法でプロセスを停止エラーをスローし、それを処理するためにこれを行うことができますさらに進めることなく。

void foo() 
{ 
    try 
    { 
     if (a > b) 
     { 
     throw MyException(); 
     } 

     DoOtherStaff(); 
    } 
    catch (const MyException& e) 
    { 
     HandleError(); 
    } 
} 

私は

enum MyError : Error 
{ 
    case myError(String) 
} 

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

     DoOtherStaff(); 
    } 
    catch 
    { 
     HandleError(); 
    } 
} 

スウィフト3にこのような何かを実装しようとしています。しかし、それが囲むキャッチが網羅しているわけではないので、エラーが処理されないことを私に言われます。それを処理する方法はありますか?

ありがとうございました!

+1

これはC++ではないので、大文字を関数名に使用しないでください。ありがとう。 :) - セミコロンも失う。 – matt

答えて

1

先ほどご紹介したコードで先験的が間違っていませんか?証拠として、単にコピーして遊び場に次の(または実際のプロジェクトでclass定義に)を貼り付けます。

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() {} 

コンパイルし、運動場で細かい実行されること(もちろん、それはは行いませんが、)。私があなたが与えたコードと違ったことは、 "空白を埋める"こと、すなわちあなたが言及したすべての言葉の宣言を提供することでした。

+0

ありがとうございます。私はエラーを見つけたと思う。コードを転送していて、まだ 'catch(const MyError&e)'を持っていました。私の非常に愚かな.... –