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