XCode 16.2 日本語化計画
throw される可能性のあるエラー値を表す型。
Error プロトコルへの準拠を宣言する全ての型は、Swift のエラー処理システムでエラーを表すために使用できます。Error プロトコルには独自の要件がないため、作成したカスタム型すべてに準拠を宣言できます。
Swift の列挙型は、単純なエラーを表すのに適しています。Error プロトコルに準拠し、考えられるエラーごとにケースを持つ列挙型を作成してください。エラーの回復に役立つ追加の詳細情報がある場合は、関連した値を使用してその情報を含めてください。
以下の例は、文字列から整数を解析するときに発生する 2 種類のエラー (文字列によって表される値が整数データ型に対して大きすぎる場合のオーバーフローと、入力内に数値以外の文字が見つかった場合の無効な入力) をキャプチャする IntParsingError 列挙型を示しています。
enum IntParsingError: Error { case overflow case invalidInput(Character) }
invalidInput の場合、無効な文字が関連した値として含まれます。
次のコードサンプルは、String インスタンスの整数値を解析し、解析中に問題が発生した場合にエラーを throw する Int 型の拡張例を示しています。
extension Int { init(validating input: String) throws { // ... let c = _nextCharacter(from: input) if !_isValid(c) { throw IntParsingError.invalidInput(c) } // ... } }
do 文内で新しい Int イニシャライザーを呼び出す場合、以下の例のように、パターンマッチングを使用してカスタムエラー型の特定のケースを一致させ、関連した値にアクセスできます。
do {
let price = try Int(validating: "$100")
} catch IntParsingError.invalidInput(let invalid) {
print("Invalid character:'\(invalid)'")
} catch IntParsingError.overflow {
print("Overflow error")
} catch {
print("Other error")
}
// Prints "Invalid character: '$'"
ファイル内の位置やアプリケーションの状態など、共通の同じデータを異なるエラー状態に含めたい場合があります。そのような場合は、構造体を使用してエラーを表現します。以下の例では、XML 文書を解析する際に、エラーが発生した行番号と列番号を含むエラーを表現するために構造体を使用しています。
struct XMLParsingError: Error { enum Kind { case invalidCharacter case mismatchedTag case internalError } let line: Int let column: Int let kind: Kind } func parse(_ source: String) throws -> XMLDoc { // ... throw XMLParsingError(line: 19, column: 5, kind: .mismatchedTag) // ... }
繰り返しになりますが、パターンマッチングを使って条件付きでエラーをキャッチしましょう。parse(_:) 関数によって throw される XMLParsingError エラーをキャッチする方法は以下のとおりです。
do {
let xmlDoc = try parse(myXMLData)
} catch let e as XMLParsingError {
print("Parsing error: \(e.kind) [\(e.line):\(e.column)]")
} catch {
print("Other error: \(error)")
}
// Prints "Parsing error: mismatchedTag [19:5]"
var localizedDescription: String
このエラーのローカライズされた説明を取得します。
SendableMetatype
DistributedActorSystemError
DistributedActorCodingError
ExecuteDistributedTargetError
LocalTestingDistributedActorSystemError
Unicode.UTF8.ValidationError
Unicode.UTF8.ValidationError.Kind
成功または失敗のいずれかを表す値。それぞれのケースに関連した値が含まれます。