본문 바로가기

교육/Swift

[swift] exception

1. 예외

try : 예외가 발생할 수 있는 함수 앞에 적음

do : 예외 발생 구간을 묶는 함수

catch : 해당 예외문이 나왔을 때 처리함

throw : 예외 가능성이 있을 때 명시 


2. 샘플 코드

// 예외를 던질 사용할 enum 상수

// 아무것도 없지만 is ErrorType으로 검사할 있으니 좋은 구현?

enum FileSendError : ErrorType

{

    case NoConnection

    case FileNotFound

}

func sendFile( a : Int) throws ->Bool // 예외 가능성이 있으면 throws 명시

{

    //    print("s")

    //    return true // 리턴해버리면 defer 안불림

    defer // throw발생해서 종료되었을 실행, 예외가 안나왔을때도 부름, 예외가 나와도 부름, 항상 처음에 있어야함

    {

        print(" 코드는 함수가 종료되기 전에 항상 실행")

        // closeDB()

    }

    print("start")

    // 멤버 data = 자원할당

    if a == 0

    {

        throw FileSendError.FileNotFound // 예외 던짐

    }

    print("end")

    return true

}

do{

    try sendFile(0) // 예외 가능성이 있는 함수를 호출하기 위한 표시

}catch FileSendError.NoConnection{

    print("no connection")

}catch FileSendError.FileNotFound{

    print("not found")

}catch let error as NSError{ // 모든거 잡음

    print("Unknown Exception : \(error.localizedDescription)")

}


'교육 > Swift' 카테고리의 다른 글

[swift] selector  (0) 2016.08.22
[swift] guard  (0) 2016.08.22
[swift] generic  (0) 2016.08.08
[swift] operator overloading  (0) 2016.08.08
[swift] protocol  (0) 2016.08.08