Swift에서 이상 투척과 네 가지 이상 처리

4347 단어 iOSswift이상
Swift에서 다른 언어처럼 이상 처리 이상을 던질 수 있습니다. 오늘은 Swift에서 이상 처리와 처리를 자세히 말씀드리겠습니다.처음에 오류나 이상을 정의해야 합니다. Swift의 간단한 이상은 매거진 정의를 사용할 수 있습니다. 이 매거진은 빈 프로토콜 Error를 계승해야 합니다. 다음 코드는 다음과 같습니다.
enum OperationError : Error {
    case ErrorOne
    case ErrorTwo
    case ErrorThree(String)
    case ErrorOther
}

여기서 이상값의 매거를 정의했습니다. 다음에 함수를 써서 이 이상값을 사용합니다. 이상값을 던질 수 있는 함수는 함수의 표현식 뒤에 키워드throws(이 함수는 일반적으로throwing 함수라고 부른다)를 추가해야 합니다. 만약에 이 함수에 반환값throws 키워드가 있으면 ->ReturnType 앞에 쓰고 코드를 보십시오.
func numberTest(num:Int) throws{
    if num == 1 {
        print(" ")
    }else if num == 2 {
        throw OperationError.ErrorTwo
    }else if num == 3{
        throw OperationError.ErrorThree(" ")
    }else {
        throw OperationError.ErrorOther
    }
}

이것은 매우 간단한 함수로, 전송된 매개 변수의 값에 따라 이상을 던지는지, 어떤 이상을 던지는지 확인할 수 있다.다음은 첫 번째 이상 처리 오류 전달법을 보십시오. 말 그대로 함수 자체가 이상을 처리하지 않고 이상을 상위 등급에 던져 상위 등급이 처리하도록 하는 것입니다. 아래 코드와 같습니다.
// 
func throwDeliver(num:Int) throws ->String {
    print(" ")
    try numberTest(num: num)
    print(" ")
    return " "
}

throwDeliver라는 throwing 함수는 그 자체가numberTest 함수에서 던질 수 있는 이상을 처리하지 않고 throwDeliver라는 함수를 호출하는 곳에 이상을 처리했습니다.이상을 전달할 수 있는 그 자체는 틀림없이throwing이다
두 번째는 do-catch를 사용하여 이상을 포획 처리합니다. do 패키지에서 실행하면 이상한 코드를 던지고 catch 지점에서 이상 처리 이상을 일치합니다. 코드를 보십시오.
//do-catch 
do {
    print("do-catch  ")
    try throwDeliver(num: 5)
    print(" ")
} catch  OperationError.ErrorOne {
    print("ErrorOne:")
} catch OperationError.ErrorTwo {
    print("ErrorTwo:")
} catch OperationError.ErrorThree(let discription) {
    print("ErrorThree:"+discription)
}catch let discription{
    print(discription)
}

세 번째, 이상을 선택 가능한 값으로 변환합니다. 만약에 한 문장이 이상을 던지면 이 문장의 원래 반환 값이 무엇이든지 nil로 되돌아옵니다.
// 
if let retureMessage = try? throwDeliver(num: 1) {
    print(" :"+retureMessage)
}

네 번째, 이상 전달을 금지합니다. 이 문장이 이상을 던지지 않는다고 확신해야만 이렇게 할 수 있습니다. 그렇지 않으면 실행 중 오류가 발생할 수 있습니다.
// 
print(try! throwDeliver(num: 1)+": ")

좋은 웹페이지 즐겨찾기