[swift] Swift 디버깅 시 잘못된 연산자 사용 예외 처리하기

Swift는 안전한 타입 언어로, 잘못된 연산자 사용에 대한 예외 처리를 강력히 지원합니다. 이번 블로그에서는 잘못된 연산자 사용 시 발생할 수 있는 예외를 처리하는 방법에 대해 알아보겠습니다.

문제 상황

가끔씩 개발 과정에서 잘못된 연산자를 사용하는 경우가 있습니다. 예를 들어, 숫자를 나누는 연산을 할 때 분모로 0을 사용하면 예외가 발생합니다. 이러한 상황에서 우리는 어떻게 예외를 처리할 수 있을까요?

예외 처리 방법

Swift에서는 do-catch 문을 사용하여 예외를 처리할 수 있습니다. 다음은 잘못된 연산자를 사용할 때 발생하는 예외를 처리하는 예제 코드입니다.

func divideNumbers(_ num1: Int, _ num2: Int) {
    do {
        let result = try num1 / num2
        print("나눈 결과는 \(result)입니다.")
    } catch {
        print("잘못된 연산입니다. 분모로 0을 입력할 수 없습니다.")
    }
}

divideNumbers(10, 5) // 출력: 나눈 결과는 2입니다.
divideNumbers(10, 0) // 출력: 잘못된 연산입니다. 분모로 0을 입력할 수 없습니다.

위의 코드에서 do 문 안에서 잘못된 연산이 실행될 수 있는 부분을 try 블록으로 감싸고, catch 블록에서 예외 발생 시 실행할 코드를 작성합니다. 이렇게 예외를 처리함으로써 프로그램이 충돌하는 것을 방지할 수 있습니다.

추가 예외 처리 방법

Swift에서는 예외 타입을 지정하여 정확히 어떤 예외에 대해 어떤 동작을 수행할지 결정할 수도 있습니다. 이를 통해 더욱 세부적인 예외 처리가 가능해집니다. 예를 들어, 분모에 0을 입력한 경우에만 특정 동작을 수행하고, 그 외에는 다른 동작을 수행하는 경우입니다.

enum DivisionError: Error {
    case DivideByZero
}

func divideNumbers(_ num1: Int, _ num2: Int) {
    do {
        if num2 == 0 {
            throw DivisionError.DivideByZero
        }
        let result = try num1 / num2
        print("나눈 결과는 \(result)입니다.")
    } catch DivisionError.DivideByZero {
        print("잘못된 연산입니다. 분모로 0을 입력할 수 없습니다.")
        // 특정 동작 수행
    } catch {
        print("다른 예외가 발생했습니다.")
        // 다른 동작 수행
    }
}

divideNumbers(10, 5) // 출력: 나눈 결과는 2입니다.
divideNumbers(10, 0) // 출력: 잘못된 연산입니다. 분모로 0을 입력할 수 없습니다.

위의 코드에서는 DivisionError라는 예외 타입을 정의하여, 분모에 0을 입력한 경우에만 해당 예외를 발생시킵니다. 그리고 catch 블록에서 예외 타입에 따라 서로 다른 동작을 수행할 수 있습니다.

결론

Swift에서는 잘못된 연산자 사용에 대한 예외 처리를 강력하게 지원합니다. do-catch 문을 사용하여 예외를 처리하고, 커스텀 예외 타입을 정의하여 세부적인 예외 처리를 수행할 수 있습니다. 이를 통해 안정적인 프로그램을 개발할 수 있습니다.

참고 자료: Official Swift Documentation