Swift에서 이상 투척과 네 가지 이상 처리
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)+": ")
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.