Kotlin tidak mendukung pengecualian yang diperiksa. Hal ini menyederhanakan dan memperlancar penanganan error, karena Anda dapat memilih untuk menangani hanya pengecualian yang berpotensi dapat dipulihkan. Dan karena Anda tidak perlu menangani setiap kemungkinan pengecualian secara eksplisit, kode Anda tidak terlalu berantakan dan akibatnya, tetap lebih berfokus pada tujuan utamanya.
Kegagalan yang dapat dipulihkan adalah masalah yang dapat ditangani developer dari sisi mereka.
Misalnya, jika ID yang digunakan dalam panggilan tidak valid, API akan menampilkan
HomeException dengan pesan invalid data. Kemudian, developer aplikasi dapat
memilih untuk menghapus ID tersebut dari cache-nya atau menampilkan pesan kepada pengguna
seperti "Struktur tidak ditemukan".
Contoh cara menangani kegagalan yang dapat dipulihkan:
val result =
   try {
     homeManager.requestPermissions()
   } catch (e: HomeException) {
     PermissionsResult(
       PermissionsResultStatus.ERROR,
       "Got HomeException with error: ${e.message}",
     )
   }
Setiap metode di Home API dapat memunculkan
  
    HomeException, jadi sebaiknya gunakan blok try-catch untuk
    mendeteksi HomeException pada semua panggilan.
Saat menangani HomeException, periksa kolom
    
    error.code dan 
    error.message untuk mengetahui apa yang salah. Mungkin juga ada sub-kode error, jadi panggil metode 
    getSubErrorCodes() dan periksa hasilnya.
Setiap pengecualian yang tidak ditangani akan menyebabkan aplikasi Anda error.
Tabel berikut memberikan arti kode HomeException yang mungkin Anda temui:
| Kode | Arti | 
|---|---|
| ABORTED | Operasi dibatalkan, umumnya karena masalah konkurensi seperti kegagalan pemeriksaan pengurut atau pembatalan transaksi. | 
| ALREADY_EXISTS | Entitas yang coba dibuat oleh klien, misalnya file atau direktori, sudah ada. | 
| API_NOT_CONNECTED | Klien mencoba memanggil metode dari API yang gagal terhubung. Hal ini dapat terjadi jika perangkat sedang offline atau tidak mendukung API yang coba dipanggil klien. | 
| CANCELLED | Operasi dibatalkan, biasanya oleh pemanggil. | 
| COMMAND_FAILED | Perintah gagal dieksekusi. Periksa kode sub-error untuk mengetahui detail selengkapnya. | 
| CURSOR_WINDOW_NOT_SUPPORTED | Metode yang menggunakan CursorWindowdipanggil, tetapiCursorWindowtidak diaktifkan atau tidak didukung dalam
      konteks saat ini. | 
| DATA_LOSS | Data hilang atau rusak yang tidak dapat dipulihkan. | 
| DEADLINE_EXCEEDED | Batas waktu berakhir sebelum operasi selesai. Untuk operasi yang mengubah status sistem, error ini mungkin ditampilkan meskipun operasi telah berhasil diselesaikan. | 
| DECOMMISSIONING_INELIGIBLE | Penonaktifan gagal karena perangkat tidak memenuhi syarat untuk penonaktifan. | 
| FAILED_PRECONDITION | Operasi tersebut ditolak karena sistem tidak dalam keadaan
        yang diperlukan untuk menjalankan operasi. Misalnya, Anda mungkin mendapatkan
        pesan ini jika perintah stopdariOvenCavityOperationalStateTraitdipanggil pada
        oven yang sudah berhenti. | 
| INTERNAL | Error internal. Artinya, beberapa invarian yang diperlukan oleh sistem pokok telah rusak. Kode error ini disediakan untuk error serius. | 
| INVALID_ARGUMENT | Klien memberikan argumen yang berada di luar rentang nilai yang diharapkan. | 
| INVALID_DATA_HOLDER | Pemegang data tidak valid. | 
| NOT_FOUND | Entitas yang diminta, seperti file atau direktori, tidak ditemukan.
        Jika suatu permintaan ditolak pada seluruh kelas pengguna, seperti peluncuran
        fitur bertahap atau daftar yang diberi akses yang tidak didokumentasikan, NOT_FOUNDdapat digunakan.
        Jika permintaan ditolak pada beberapa pengguna di dalam suatu kelas pengguna,
        seperti pada kontrol akses berbasis pengguna, maka,PERMISSION_DENIEDharus digunakan. | 
| OUT_OF_RANGE | Upaya operasi dilakukan melampaui rentang yang valid, seperti mencari atau
        membaca melampaui end-of-file. Tidak sepertiINVALID_ARGUMENT, error ini
        menunjukkan masalah yang dapat diperbaiki jika status sistem berubah. | 
| PERMISSION_DENIED | Pemanggil tidak memiliki izin untuk menjalankan operasi yang ditentukan. PERMISSION_DENIEDtidak boleh digunakan untuk
        penolakan yang disebabkan
        oleh kehabisan beberapa resource (gunakanRESOURCE_EXHAUSTEDuntuk error tersebut).PERMISSION_DENIEDtidak boleh digunakan jika pemanggil tidak dapat
        diidentifikasi (gunakanUNAUTHENTICATEDuntuk error tersebut).
        Kode error ini tidak menyatakan bahwa suatu permintaan valid atau bahwa
        entitas yang diminta ada atau memenuhi prakondisi lainnya. | 
| RESOURCE_EXHAUSTED | Beberapa resource telah habis, mungkin karena kuota per pengguna telah tercapai atau seluruh sistem file kehabisan ruang.
        Misalnya, error ini dapat terjadi jika perintah dispensedariDispenseTraitdipanggil di perangkat pengumpan hewan peliharaan, tetapi tidak
        ada lagi makanan di unit. | 
| SDK_INITIALIZATION_MISSING_INFO | SDK diinisialisasi tanpa semua informasi yang diperlukan.
        Misalnya, error ini ditampilkan jika klien mencoba
        mendapatkan TraitFactoryuntuk ID karakteristik tertentu, tetapi karakteristik tersebut
        tidak disertakan saat menginisialisasi SDK. Lihat
        Menginisialisasi rumah di Android. | 
| UNAUTHENTICATED | Pemanggil tidak dapat diidentifikasi atau permintaan tidak memiliki kredensial autentikasi yang valid. | 
| UNAVAILABLE | Layanan tidak tersedia. Kemungkinan besar ini hanya kondisi sementara, yang dapat diperbaiki dengan mencoba kembali menggunakan backoff. Perhatikan bahwa mencoba kembali operasi non-idempoten tidak selalu aman. | 
| UNIMPLEMENTED | Operasi yang diminta tidak diterapkan, didukung, atau diaktifkan dalam layanan ini. | 
| UNKNOWN | Error tidak diketahui. UNKNOWNmuncul saat kondisi error
        terjadi yang tidak dapat diklasifikasikan menggunakan kode error lainnya.
        Misalnya, error ini dapat ditampilkan saat nilai status yang diterima
        dari API eksternal tidak memiliki informasi yang memadai
        mengenai penyebab utamanya. | 
| WRITE_FAILED | Penulisan gagal dieksekusi. Periksa kode sub-error untuk mengetahui detail selengkapnya. |