Isi kandungan:
- Kesalahan membaling semasa syarat-syarat yang luar biasa
- Mengeluarkan ralat kepada pemanggil
- Pengendalian ralat yang diperlukan
Video: From C to Python by Ross Rheingans-Yoo 2024
Kod Java anda sangat penting untuk menyelesaikan masalah. Walau bagaimanapun, ada kalanya kod anda tidak mempunyai cukup maklumat, sumber, hak, atau beberapa keperluan lain untuk menyelesaikan masalah.
Apabila ini berlaku, kod anda melemparkan ralat dengan menggunakan objek pengecualian. Istilah pengecualian adalah sesuai kerana ia harus menjadi pengecualian kepada peraturan, bukannya tindakan pertama yang dilakukan oleh aplikasi. Walaupun demikian, aplikasi menghadapi kesilapan yang memerlukan langkah-langkah yang luar biasa, dan bahagian berikut menerangkan bagaimana menangani situasi ini.
Kesalahan membaling semasa syarat-syarat yang luar biasa
Untuk amalan, anda boleh membuat aplikasi yang boleh menghasilkan pelbagai jenis ralat. Biasanya, anda tidak akan membuang ralat jika nilai berada dalam julat yang salah - anda akan memaparkan mesej terus kepada pengguna sebaliknya. Walau bagaimanapun, anda boleh mencipta contoh yang menunjukkan cara membuang dan menangkap ralat dari dalam kaedah.
Mengeluarkan ralat kepada pemanggil
Banyak contoh kod yang anda mulakan hanya bermula untuk sampai ke titik di mana anda memanggil kaedah dari utama (). Kaedah utama () sentiasa menjadi tahap tertinggi permohonan anda. Seperti yang anda panggil kaedah, kaedah yang anda panggil membentuk tahap tambahan.
Sebagai contoh, satu kaedah yang dipanggil dari utama () akan berada pada tahap kedua permohonan anda. Jika kaedah itu terpaksa memanggil kaedah lain, kaedah itu akan berada pada tahap ketiga, dan sebagainya. Kebanyakan aplikasi terdiri daripada banyak tahap panggilan.
Malah, apabila anda melihat pengecualian di skrin, ia sebenarnya memaparkan senarai kaedah yang memanggil kaedah semasa dalam format yang dipanggil stack panggilan .
Stack panggilan adalah penyenaraian kaedah dan susunan di mana ia dipanggil oleh kaedah lain. Mengetahui timbunan panggilan boleh membantu anda mencari sumber ralat yang berpotensi apabila ia tidak berlaku pada tahap semasa permohonan.
Kesalahan pengendalian adalah bahagian penting dalam amalan pengaturcaraan yang baik. Sekiranya anda mahukan aplikasi yang mantap yang tidak kerap berlaku, anda perlu menyediakan pengendalian ralat yang baik. Walau bagaimanapun, cuba mengatasi ralat apabila anda tidak mempunyai maklumat yang cukup untuk mengatasi ralat itu juga menjadi masalah.
Apabila kod anda cuba untuk membetulkan ralat pada tahap terlalu rendah, ia menyembunyikan ralat dari tahap yang mungkin dapat memperbaikinya. Ya, anda ingin membetulkan kesilapan pada tahap yang paling rendah, tetapi tidak membebankan pembaikan yang sebenarnya dapat menyembunyikan sesuatu yang lebih serius.
Apabila anda mendapati bahawa tahap aplikasi tertentu tidak mempunyai sumber, maklumat, keistimewaan, akses pengguna, atau beberapa perkara lain yang diperlukan untuk mengatasi ralat, maka anda mengeluarkan pernyataan buang dengan objek pengecualian yang sesuai.Tahap sebelumnya permohonan akan menerima pengecualian dan menentukan sama ada ia dapat mengatasinya.
Walau bagaimanapun, jika kaedah utama () menerima pengecualian, maka anda mesti menentukan apa yang harus dilakukan dengan ralat itu, atau aplikasi akan jatuh. Ini umumnya dianggap sebagai amalan pengaturcaraan yang buruk untuk membiarkan kemalangan aplikasi - anda perlu tampil dengan beberapa cara untuk menangani kesilapan yang dihadapi oleh aplikasi.
Pengendalian ralat yang diperlukan
Java menyediakan dua jenis pengecualian: diperiksa (yang dimonitor oleh JRE) dan tidak dicentang (yang tidak dimonitor oleh JRE). Anda mempunyai pilihan untuk mengendalikan pengecualian yang tidak terkawal. Walau bagaimanapun, Jawa memaksa anda untuk mengendalikan pengecualian diperiksa. Kod anda tidak akan dikompil jika anda cuba menggunakan kaedah yang mempunyai pengecualian diperiksa yang berkaitan dengannya.
Pengecualian diperiksa adalah salah satu yang JRE diberitahu oleh definisi kelas untuk memantau. Pasukan JRE memaksa pengguna kelas untuk memberikan pengendalian untuk pengecualian untuk memastikan bahawa kelas itu melaksanakan dengan pasti.
Semua jenis butiran ganjil dikaitkan dengan pengecualian yang diperiksa dan tidak terkawal. Cara mudah untuk mengetahui sama ada pengecualian diperiksa adalah untuk mengetahui kelas induk. Semua pengecualian yang subclassed dari Ralat atau kelas RuntimeException tidak dicentang - setiap pengecualian lain diperiksa.
Amalan terbaik adalah untuk menangani setiap pengecualian dalam aplikasi anda, dan anda tidak perlu bimbang sama ada pengecualian diperiksa atau tidak ditandai. Seorang pemaju yang hebat sentiasa mengendalikan kesilapan yang berpotensi - itulah garis bawah.