2017-01-25 3 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)'를 사용했다. 아주 바보 같은 .... –