iOS Swift No.1 기본 섹션 - 오류 처리
6841 단어 iOS개발하다-Swift 언어 기초
제1장 기초 부분
13. 오류 관리
error handling은 코드를 실행할 때 오류가 발생했을 때 응답하고 처리하는 데 사용되며 옵션과 달리 값이 존재하는지 여부를 사용하여 의사소통 함수의 성패를 전달합니다.오류 관리는 이 오류를 결정하는 잠재적인 원인을 판단할 수 있습니다. 가능한 경우 오류 정보를 코드의 위치로 더 처리할 수 있습니다.func canThrownError() throws {
// this function may or may not throw an error
}
throws 키워드는 이 함수의 성명에 있습니다. 이 함수는 성명에 throws 키워드를 포함해서 이 오류를 던질 수 있음을 표시합니다.오류를 던질 수 있는 함수를 호출할 때try 키워드로 오류를 표현식에 던질 수 있습니다.swift는 자동으로 오류를catch의 자구에 의해 처리될 때까지 현재 범위 밖으로 전달합니다.do {
try canThrowAnError()
// no error was thrown
} catch {
// an error was thrown
}
do 문장은 오류 정보를 제어할 수 있는 범위에 새 용기 범위를 만들었습니다. 오류를 한 개 이상의catch 자문에 전달할 수 있습니다.// makeASandwich throw error
func makeASandwich() throws{
}
// do try
do {
// try makeASandwich
try makeASandwich()
eatASandwich()
} catch SandwichError.outOfCleanDishes {
washDishes()
// error catch
} catch SandwichError.missingIngredients(let ingredients){
buyGroceries(ingredients)
}
위의 예에서 이 정의된 함수makeAsandwich () 는throw에 error를 주고, 이 함수의 호출을try 표현식에 포장합니다.도 문장에서 함수를 포장하고 호출하면 모든 오류를catch 문장으로 전송하여 처리합니다.표현식은 두 가지 상황이 있는데 하나는 makeAsandwich이고 하나는 eatAsandwich이며,makeAsandwich에 나타날 때 나타나는 error는catch 자구에 던져져 처리된다.이 예에서catch 자구에 의해 처리된 error 두 개가 나온다. 하나는 깨끗한 접시outOfCleanDishes
와 재료가 부족할 때missingIngredients
error가 나타나지 않으면 eatAsandwich()를 실행한다.
14. Assertions and Preconditions(단언 및 선결 조건)
What & Why 사실 단언과 선결 조건은 코드가 실행될 때 코드의 질을 측정하는 것이다.코드가 실행되기 전에 기본 조건이 충족되는지 확인하기 위해 단언과 선결 조건을 사용해야 한다.블로 값이 단언과 선결 조건에서의 값은true가 다른 코드를 계속 실행하는 것이고, 반대로 프로그램은 실행을 정지한다.인코딩할 때의 가설이나 기대를 표현하기 위해 선각적인 조건과 단언을 사용하십시오.단언은 한 가설을 찾아내고 정정하는 데 쓸 수 있다.선결 조건은 제품 테스트 시 발생하는 문제를 검사하는 데 쓰인다.
단언과 선결 조건 사이의 차이는 실행되는 시간이 다르다는 데 있다. 단언은 디버깅 버전에서만 실행되지만 디버깅과 발표 버전에서는 선결 조건이 실행된다.발표 버전에서는 단언 내의 조건이 더 이상 실행되지 않습니다.이것은 개발 과정에서 가능한 한 많은 단언을 사용할 수 있다는 것을 의미한다. 왜냐하면 이것은 발표 버전의 성능에 영향을 주지 않기 때문이다.
14.1 디버그 with assertion
// -3
let age = -3
assert(age >= 0,"A person's age can't be less than zero")
/* (a person's ... zero)
*/
이럴 때 단언이 실패할 수 있는 것은 assert(age>=0)의 브리 값이false이기 때문이다.그래서 디버깅을 할 때 실패 프로그램이 중단되고 정지되었다고 단언했습니다.
여러 개의 문이 있을 때 AssertionFailure()로 선언 실패를 표시합니다.if age > 10 {
print("You can ride roller-coaster.")
}else if age >= 0 {
print("You can ride the ferris wheel")
}else {
assertionFailure("A person's age can't be less than zero")
}
14.2 Enforcing preconditions(선결 조건 실행)
만약 조건이 실패할 가능성이 있지만, 이 프로그램을 계속 실행시켜야 한다면, 선각적인 조건을 사용해야 한다.precondition () 방법을 사용해서 잘못된 부분을 표시할 수 있습니다.precondition(index > 0, "Index must be greater than zero")
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.
func canThrownError() throws {
// this function may or may not throw an error
}
do {
try canThrowAnError()
// no error was thrown
} catch {
// an error was thrown
}
// makeASandwich throw error
func makeASandwich() throws{
}
// do try
do {
// try makeASandwich
try makeASandwich()
eatASandwich()
} catch SandwichError.outOfCleanDishes {
washDishes()
// error catch
} catch SandwichError.missingIngredients(let ingredients){
buyGroceries(ingredients)
}
// -3
let age = -3
assert(age >= 0,"A person's age can't be less than zero")
/* (a person's ... zero)
*/
if age > 10 {
print("You can ride roller-coaster.")
}else if age >= 0 {
print("You can ride the ferris wheel")
}else {
assertionFailure("A person's age can't be less than zero")
}
precondition(index > 0, "Index must be greater than zero")
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.