본문 바로가기

Swift 공부

Swift Throw Error Handling

런타임 에러 처리는 앱의 함수들을 만드는 과정중 처리해야할 에러처리 (ex 네트워크 통신 실패 ) 과

같은 사유를 처리해 유저에게 알리거나 로그를 기록하거나 하는 과정들을 처리하고

앱의 비정상적인 종료를 막기 위해 필요하다.

 

 

바로 코드를 보면서 설명을하겠습니다.

 

 

enum ErrorTest : Error{
    case BlankError
}


class ErrorHandling {
    
    
    func 테스트함수(item : String) throws -> String{
        
        if(item == "테스트"){
            
            return "성공"
        }else{
            if(item == ""){
                throw ErrorTest.BlankError
            }
            
            return "실패"
        }
    }
    
}

let errorHandling = ErrorHandling()

do {
    let item = try errorHandling.테스트함수(item: "")
    print(item)
   
}catch{ 
    print(error)
    //BlankError
}


do {
    let item = try errorHandling.테스트함수(item: "asdasd")
    print(item)
    //실패
}catch{
    print(error)
}

ErrorTest 라는 개발자가 원하는 애러를 정의하고

 

throws를 이용하여 에러가 발생 할 수 있는 함수를 만든 후 

 

특정 상황에 내가 원하는 Error 문구를 throw 한다 해당 예제에서는 공백이 들어왓을때 BlankError 을 던지는 함수를 만들었다.

 

생각보다 간단하다 내가 원하는 Error을 정의하고 Error을 리턴하는 함수를 만들고 내가 원하는 상황에 맞춰 적절하게

에러를 던져준다 몹시 간단하다

 

사용 역시 간단하게 do catch 문을 이용하여 error을 캐치하여 사용하면 된다 

 

네트워크 통신을 컨트롤 할 때 가장많이 Error Handling을 하게 되는것 같고 실제 사용하는 Alamofire의 라이브러리를 찾아보면

AFError 일부 캡쳐

이렇게 상당히 많은 에러를 만들어 놓은것을 볼수 있다.

 

그래서 이걸 기반으로 내일은 순수하게 URLSession만을 이용하여 Error을 핸들링하고 통신하는 예제를 만들어서 글을 쓸 생각이다.

 

Swift 에서 do catch 문 error의 개념만 알면 글을 이해하는게 큰 어려움은 없을것같다.