Swift 지식 포인트 17 - 오류 처리
enum VendingMachineError: Error {
case invalidSelection
case insufficientFunds(coinsNeeded: Int)
case outOfStock
}
오류를 던져서throw 키워드를 사용합니다.
4가지 처리 방법:
throwing 함수 전달 오류
함수, 방법, 구조기가 오류를 던질 수 있음을 표시하기 위해 함수 성명의 매개 변수 목록에throws 키워드를 추가합니다.
func canThrowErrors() throws -> String
throwing 함수만 오류를 전달할 수 있습니다.어떤 비throwing 함수 내부에서 던진 오류는 함수 내부에서만 처리할 수 있습니다.
잘못된 함수, 방법, 구조기를 호출하기 전에try 키워드를 추가하거나try?아니면 try!이런 변체.
Do-Catch 처리 오류
do-catch 문장을 사용하여 패키지 코드를 실행하여 오류를 처리할 수 있습니다.만약 도 자구에 있는 코드가 오류를 던졌다면, 이 오류는catch 자구와 일치하여 어느 자구가 그것을 처리할 수 있는지 결정합니다.
do {
try expression
statements
} catch pattern 1 {
statements
} catch pattern 2 where condition {
statements
}
오류는 주위의 작용역에 의해 처리되어야 합니다. 외곽의do-catch 오류 처리 문장이나throwing 함수의 내부입니다.
오류를 선택적 값으로 변환
try 사용 가능?오류를 선택 가능한 값으로 변환하여 오류를 처리합니다.try를 평가하고 있다면?표현식에서 오류가 발생했습니다. 그러면 표현식의 값은nil입니다.
let x = try? someThrowingFunction()
오류 전송 비활성화
때때로 당신은 어떤throwing 함수가 실제로 실행될 때 오류를 던지지 않는다는 것을 알고 있습니다. 이런 상황에서 표현식 앞에서try를 쓸 수 있습니다!오류 전달을 사용하지 마십시오. 이것은 오류가 없을 때 실행될 때 호출을 단언합니다.만약 정말 오류를 던졌다면, 실행할 때의 오류를 얻을 수 있을 것이다.
정리 작업 지정
defer 문장을 사용하여 현재 코드 블록을 떠날 때 일련의 문장을 실행합니다.
defer {
//
//
//
}
실행 지연된 문장은 브레이크,return 문장이나 오류를 던지는 제어 이동 문장을 포함할 수 없습니다.실행 지연 작업은 그들이 설명한 순서에 따라 뒤에서 실행됩니다. 즉, 첫 번째 defer 문장의 코드는 마지막에 실행되고, 두 번째 defer 문장의 코드는 두 번째 실행됩니다.마지막 문장이 첫 번째로 실행될 것이다.
오류 처리와 관련된 코드가 없어도 defer 문장을 사용할 수 있습니다.
func processFile(filename: String) throws {
if exists(filename) {
let file = open(filename)
defer {
close(file)
}
while let line = try file.readline() {
// 。
}
// close(file) , 。
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.