Section 6/91 menit

6. Kapan Tidak Digunakan

6. Kapan Tidak Digunakan

Hindari Typed Throws ketika:

1. Error bisa datang dari banyak sumber berbeda

swift
// JANGAN: memaksa wrap dari banyak sumber ke satu tipe
enum ServiceError: Error {
    case network(URLError)         // dari URLSession
    case database(SQLiteError)     // dari SQLite
    case parsing(DecodingError)    // dari JSONDecoder
    case unknown(any Error)        // catch-all yang mengalahkan tujuan typed throws
}

// Lebih baik: gunakan throws biasa atau pisahkan ke fungsi-fungsi terpisah
func fetchAndSave() throws -> User { ... }  // throws(any Error) — jujur tentang kompleksitas

2. Prototyping atau early development

swift
// Saat masih eksplorasi, error types sering berubah
// Gunakan throws biasa dulu, refactor ke typed throws saat API stabil
func experimentalFeature() throws -> Result { ... }

3. Fungsi yang memanggil banyak library eksternal

swift
// Library eksternal punya error types mereka sendiri
// Wrapping semua ke satu typed error sering kali sia-sia
func processPDF() throws -> Document {
    // Memanggil PDFKit, Network, CoreData — semua punya error berbeda
    // throws biasa lebih jujur di sini
}

4. API yang perlu backward compatibility dengan Swift 5

swift
// Jika codebase harus compile di Swift 5, typed throws tidak tersedia
// Tandai dengan @available atau gunakan conditional compilation

5. Ketika error type akan terus berkembang

swift
// Jika error enum sering mendapat case baru, setiap penambahan
// akan break semua switch statement caller — trade-off yang berat