0Pricing
Swift Academy · บทเรียน

ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError

ออกแบบอีนัมข้อผิดพลาดที่มีรายละเอียดและสอดคล้องกับ Error และ LocalizedError

ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

ชนิดข้อผิดพลาดที่ออกแบบมาอย่างดีจะมีบริบทเพียงพอสำหรับวิเคราะห์ปัญหาและแสดงข้อความที่เข้าใจง่ายสำหรับผู้ใช้ `LocalizedError` มีจุดเชื่อมต่อสำหรับการทำงานนี้

อีนัมข้อผิดพลาดพื้นฐาน

```swift enum AuthError: Error { case invalidCredentials case accountLocked(until: Date) case networkUnavailable } ```

โพรโทคอล LocalizedError

```swift extension AuthError: LocalizedError { var errorDescription: String? { switch self { case .invalidCredentials: return "Username or password is incorrect." case .accountLocked(let date): return "Account locked until \(date.formatted())." case .networkUnavailable: return "No internet connection." } } } print(AuthError.invalidCredentials.localizedDescription) ```

failureReason และ recoverySuggestion

```swift extension AuthError: LocalizedError { var failureReason: String? { "Authentication service rejected the request." } var recoverySuggestion: String? { "Reset your password or contact support." } } ```

บริบทของข้อผิดพลาดแบบซ้อน

```swift enum APIError: Error { case server(statusCode: Int, body: String) case decode(underlying: DecodingError) case timeout } ``` เก็บข้อผิดพลาดต้นเหตุไว้ เพื่อให้สามารถบันทึกข้อมูลหรือแสดงข้อผิดพลาดในรุ่นสำหรับดีบักได้

การโยนข้อผิดพลาดแบบกำหนดเอง

```swift func login(user: String, pass: String) throws -> Token { guard !user.isEmpty && !pass.isEmpty else { throw AuthError.invalidCredentials } // ... } ```

การดักจับกรณีเฉพาะ

```swift do { let token = try login(user: u, pass: p) } catch AuthError.invalidCredentials { showAlert("Bad credentials") } catch AuthError.accountLocked(let date) { showAlert("Locked until \(date)") } catch { showAlert(error.localizedDescription) } ```

CustomDebugStringConvertible

```swift extension AuthError: CustomDebugStringConvertible { var debugDescription: String { "AuthError.\(self)" } } ```

รูปแบบการห่อหุ้มข้อผิดพลาด

```swift enum AppError: Error { case auth(AuthError) case api(APIError) case unknown(Error) } func process() throws { do { try login() } catch let e as AuthError { throw AppError.auth(e) } catch { throw AppError.unknown(error) } } ```

ข้อผิดพลาดที่เปรียบเทียบความเท่ากันได้สำหรับการทดสอบ

```swift enum FetchError: Error, Equatable { case notFound case serverError(code: Int) } XCTAssertEqual(error, FetchError.notFound) ```

ตรวจสอบความเข้าใจอย่างรวดเร็ว

โพรโทคอลใดมี `errorDescription` สำหรับข้อความข้อผิดพลาดที่แสดงต่อผู้ใช้

สรุป

ประเด็นสำคัญ: • ทำให้ข้อผิดพลาดสอดคล้องกับ `LocalizedError` เพื่อสร้างข้อความสำหรับผู้ใช้ • ใช้ค่าประกอบเพื่อเก็บบริบท เช่น รหัสสถานะและวันที่ • ห่อหุ้มข้อผิดพลาดระดับล่างไว้ในอีนัมเฉพาะโดเมน • ข้อผิดพลาดที่สอดคล้องกับ `Equatable` ช่วยให้การทดสอบหน่วยง่ายขึ้น • `CustomDebugStringConvertible` ช่วยในการดีบัก ต่อไป: การเชื่อม Result กับ async/await

คำถามที่พบบ่อย

บทเรียน “ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError”

ออกแบบอีนัมข้อผิดพลาดที่มีรายละเอียดและสอดคล้องกับ Error และ LocalizedError คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน Result
  2. map และ flatMap บน Result
  3. ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError
  4. เชื่อม Result เข้ากับ async/await
← กลับไปที่ Swift Academy