Error

작성일

error

enum MismatchError: Error {
  // 미리 에러를 정의해둔다.
  case nameMismatch
  case numberMismatch
}

func guessMyName(name input: String) {
  print("guessMyName() called")
  if input != "최재권" {
      print("틀렸다")
      return
  }
  print("맞췄다")
}

guessMyName(name: "최재권")

실행시켜보면,

guessMyName() called
맞췄다

이렇게 여기까지 탄다 하지만, 이름을 바꾸면

guessMyName(name: "류민희")

실행시켜보면,

guessMyName() called
틀렸다

로 아래는 타지 않고 위에만 탄다.
만약에 return을 지우면, 코드를 전부다 실행시켜서

guessMyName() called
틀렸다
맞췄다

이렇게 두가지 다 나온다.
이제 error enum을 활용해보면,

enum MismatchError: Error {
  // 미리 에러를 정의해둔다.
  case nameMismatch
  case numberMismatch
}

//에러를 던지는 메소드
func guessMyName(name input: String) throws {
  print("guessMyName() called")
  if input != "최재권" {
      print("틀렸다")
      throw MismatchError.nameMismatch //return 대신
  }
  print("맞췄다")
}

try? guessMyName(name: "류민희") //대신 여기서 try를 꼭 사용해야한다.

실행해보면

guessMyName() called
틀렸다

만 뜬다 만약에 error를 잡고 싶으면,

enum MismatchError: Error {
  // 미리 에러를 정의해둔다.
  case nameMismatch
  case numberMismatch
}

//에러를 던지는 메소드
func guessMyName(name input: String) throws {
  print("guessMyName() called")
  if input != "최재권" {
      print("틀렸다")
      throw MismatchError.nameMismatch //return 대신
  }
  print("맞췄다")
}

do {
  try  guessMyName(name: "류민희")
} catch {
  print("잡은 에러: \(error)")
}

실행 시켜보면

guessMyName() called
틀렸다
잡은 에러: nameMismatch

이런 방식으로 사용할 수 있다.