Handling (do - try - catch) (feat. LocalizedError)
5819 ワード
皆さんこんにちは、今日は利用した
エラー処理とは、プログラムが予想通りに実行できるかどうかを判断せず、エラーが発生した場合に適切な操作を行うために発生する可能性のあるエラーを予測することです.
まず、どのようにエラーを投げ出しますか?
エラーが通過
では、エラーを受け取ったところで処理すべきです.
エラー処理でよく使われるのは
たとえば、
doセクションはbuy()関数の前にtryを書き込み、関数で発生したエラーを試行します.したがって、エラーが発生した場合、catchセクションでエラーが処理されます.
これは私が列挙型で定義したエラータイプです.
間違いは列挙型と友達です.エラーを定義するときに列挙を使用することを推奨します.
列挙インスタンスを使用してエラーを定義し、errorDescriptionを計算プログラムとして宣言して、swich文を使用して各エラーに適切な操作を実行できます.
文字列のみが返されるようになりましたが、必要に応じて適切なメソッドを呼び出して、より多くの情報を提供することもできます.
エラーメッセージの管理方法については、次の議論を行います.
エラーメッセージの管理にもプロトコルを使用する方法があり、プロトコルを使用するメリットがまだ分からないので使用していません.
Enum
のエラー処理を簡単にご紹介します.エラー処理とは、プログラムが予想通りに実行できるかどうかを判断せず、エラーが発生した場合に適切な操作を行うために発生する可能性のあるエラーを予測することです.
まず、どのようにエラーを投げ出しますか?
エラーが通過
throws
投げ出されます.func buy(product: String) throws {
guard money > 1000 else {
throw VendingMachine.noMoney
}
guard stock > 0 else {
throw VendingMachine.soldOut
}
print("\(product) 나왔습니다.")
}
上記の例では、buy()関数の残高が1000未満、または在庫が0未満の場合、エラーが発生し、エラーが放出されます.では、エラーを受け取ったところで処理すべきです.
エラー処理でよく使われるのは
do-try-catch
do-try-catch
以下の形態: do {
try expression
statements
} catch pattern 1 {
} catch pattern 2 {
} catch {
}
doセクションでtryによってエラーが投げ出されると、catchセクションはエラーを受信し、エラーに基づいて処理します.たとえば、
doセクションはbuy()関数の前にtryを書き込み、関数で発生したエラーを試行します.したがって、エラーが発生した場合、catchセクションでエラーが処理されます.
do {
try buy(product: "음료수")
} catch VendingMachine.noMoney {
print("잔액부족입니다.")
} catch VendingMachine.soldOut {
print("품절입니다.")
}
ではVendingMachine.noMoney
・VendingMachine.soldOut
何でしょうか?これは私が列挙型で定義したエラータイプです.
間違いは列挙型と友達です.エラーを定義するときに列挙を使用することを推奨します.
enum VendingMachine: Error {
case noMoney
case soldOut
var errorDescription: String {
switch self {
case .noMoney:
return "잔액부족입니다."
case .soldOut:
return "품절입니다."
}
}
}
また列挙型とswitchも友人です.この3つの方法の組合せはエラーを定義した.列挙インスタンスを使用してエラーを定義し、errorDescriptionを計算プログラムとして宣言して、swich文を使用して各エラーに適切な操作を実行できます.
文字列のみが返されるようになりましたが、必要に応じて適切なメソッドを呼び出して、より多くの情報を提供することもできます.
エラーメッセージの管理方法については、次の議論を行います.
エラーメッセージの管理にもプロトコルを使用する方法があり、プロトコルを使用するメリットがまだ分からないので使用していません.
LocalizedError
利用契約のメリットをご存知の方がいらっしゃいましたら、コメントをお願いします.🙏Reference
この問題について(Handling (do - try - catch) (feat. LocalizedError)), 我々は、より多くの情報をここで見つけました https://velog.io/@qudgh849/Error-Handling-do-try-catch-feat.-LocalizedErrorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol