티스토리 뷰

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)

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

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

'Swift > Swift 문법' 카테고리의 다른 글

[ARC 1] Swift의 메모리 관리 모델  (0) 2022.12.30
[고차함수 5] forEach, compactMap, flatMap  (0) 2022.12.29
[고차함수 4] reduce  (0) 2022.12.29
[고차함수 3] filter  (0) 2022.12.29
[고차함수 2] Map  (0) 2022.12.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함