SWIFTでのエラー処理
3250 ワード
enum PhoneError: Error {
case unknown
case batteryLow(batteryLevel: Int)
}
バッテリーの電力が不足しているときにエラーが発生したい場合は、throwを使用してエラーを発生することができます.throw PhoneError.batteryLow(batteryLevel: 20)

->エラー発生
swiftエラーを処理する4つの方法
1.関数のエラーを、その関数を呼び出すコードに伝播する
関数、パラメータ、およびコンストラクション関数パラメータの後にthrowキーワードを作成し、エラーが発生する可能性があることを示します.
func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String {
guard batteryLevel != -1 else { throw PhoneError.unknown }
guard batteryLevel >= 20 else { throw PhoneError.batteryLow(batteryLevel: 20) }
return "배터리 상태가 정상입니다."
// > guard 조건에 모두 걸리지 않으면 문자열 반환됨
}
guard文falseでelse文が実行され、関数が早期に終了するため、バッテリレベルが-1または20未満の場合はelse文が実行され、throwエラーが投げ出された後に関数が終了する2.docatch文でエラーを処理する
do {
try 오류 발생 가능 코드
} catch 오류 패턴 {
처리 코드
}
do {
try checkPhoneBatteryStatus(batteryLevel: -1)
} catch PhoneError.unknown {
print("알 수 없는 에러입니다.")
} catch PhoneError.batteryLow(let batteryLevel) {
print("배터리 전원 부족, 남은 배터리 : \(batteryLevel)%")
} catch {
print("그 외 오류 발생 : \(error)")
}
最後のcatch文はunknownエラーでもbutteryLowエラーでもない場合に実行される文です.エラーのタイプを指定せずにコードブロックを生成すると、そのコードブロックの内部にerrorという領域定数が暗黙的に含まれます.
3.エラーをオプション値(try?)に処理
let status = try? checkPhoneBatteryStatus(batteryLevel: -1)
print(status)

この場合、関数にエラーが発生しなかった場合

外部値を出力します.
4.エラーが発生しないようにする方法(try!)
let status2 = try! checkPhoneBatteryStatus(batteryLevel: 40)
print(status2)

エラーが発生した場合

プログラムは強制的に終了された.
出典:クイックキャンパスiOSコース
Reference
この問題について(SWIFTでのエラー処理), 我々は、より多くの情報をここで見つけました https://velog.io/@sun02/Swift의-에러처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol