Swift/Swift 문법

[Swift] 에러처리, (feat 피보나치수열)

내일은개발천재🎵 2023. 1. 2. 19:53

오늘은 Swift의 에러처리에 대해서 공부했다 (TIL)

 

GitHub - JIWON1923/Today-I-Learend

Contribute to JIWON1923/Today-I-Learend development by creating an account on GitHub.

github.com

마침 알고리즘 공부 중 피보나치 수열이 나왔는데, 사용자가 음수를 입력했을 때 에러를 처리하는 코드를 써봤다!

enum error: Error {
    case arange
}

func fibo(_ n: Int) throws -> Int {
    if n < 0 {
        throw error.arange
    } else if n <= 1 {
        return n
    }
    return try fibo(n-1) + fibo(n-2)
}


var n = Int(readLine()!)!

do {
    try print(fibo(n))
} catch {
    print("음수는 계산할 수 없습니다.")
}

이렇게 되니 그냥 사용자에게 잘못된 입력이라는 에러메시지만 출력하고 종료된다.

다시 입력을 받으려면 어떻게 해야할까!?

enum error: Error {
    case arange
}

func fibo(_ n: Int) throws -> Int {
    if n < 0 {
        throw error.arange
    } else if n <= 1 {
        return n
    }
    return try fibo(n-1) + fibo(n-2)
}

func handleError(_ n: Int) {
    do {
        try print(fibo(n))
    } catch {
        print("음수는 계산할 수 없습니다. 다시 입력해주세요")
        let newValue = Int(readLine()!)!
        handleError(newValue)
    }
}

var n = Int(readLine()!)!
handleError(n)

끝! 재귀함수의 에러처리!

사용자가 올바른 값을 입력할때까지 반복하게 된다 ^___^ 재뮜다