KomputerPemrograman

Java: pengecualian dan penanganan mereka

Setiap program akan beroperasi secara stabil jika kode sumber debug, dan tidak ada kondisi yang dapat menyebabkan situasi yang tak terduga. Proses penangkapan kemungkinan kegagalan dilakukan di panggung pemrograman. Untuk melakukan hal ini, pengembang memperhitungkan semua hasil yang diharapkan dan upaya untuk membatasi dampak dari kesalahan sehingga tidak bisa mengganggu pengoperasian program, atau menyebabkan keruntuhannya.

Ketika Anda mungkin perlu penanganan eksepsi

Di Jawa, pengecualian dapat disebabkan oleh input pengguna yang salah, tidak perlu untuk sumber daya atau program jaringan pemutusan tiba-tiba. Untuk penggunaan nyaman yang diciptakan oleh pengembang aplikasi, Anda harus mengontrol terjadinya situasi darurat. konsumen tidak perlu menunggu untuk berhenti aplikasi, kehilangan data akibat pengecualian tertangani, atau hanya bagian dari muncul pesan yang menyatakan bahwa sesuatu yang tidak beres.

Penanganan pengecualian Java

Apa yang harus dipertimbangkan? Bahasa Jawa memiliki built-in fungsi penanganan eksepsi sendiri. Tentu saja, sebagian besar kesalahan ditangkap oleh tahap kompilasi lain, sistem akan secara otomatis memberitahukan bahwa penggunaan itu tidak mungkin lagi. Tapi ada jenis pengecualian yang terjadi saat runtime. pengembang harus bisa mengantisipasinya dan untuk merancang kode sehingga tidak menyebabkan kesalahan, dan ditangani dengan cara yang khusus dan diserahkan kontrol ke cabang lain.

Di Jawa, ini diberlakukan oleh compiler untuk menangkap pengecualian, sehingga masalah-masalah khas yang dikenal dan memiliki pola latihan standar.

pengecualian khas

Contoh paling sederhana, di mana Anda bisa mendapatkan pengecualian - divisi ini. Meskipun sederhana, dalam hal, sebagai pembagi, mungkin nol, yang akan mengakibatkan kesalahan. Nah, apakah mungkin untuk memprediksi munculnya masa lalu dan mencegah. Namun pilihan ini tidak selalu tersedia, sehingga menangkap pengecualian harus diatur secara langsung dalam acara "bagi dengan nol".

Mekanisme Java untuk mencegat kesalahan pengolahan terlihat seperti ini:

  • tumpukan objek pengecualian dibuat, serta yang lain;
  • kursus alami dari program ini adalah terputus;
  • Mekanisme pengecualian sedang mencoba untuk menemukan cara alternatif untuk melanjutkan kode;
  • Cari eksekusi aman dari program dalam prosesor, kerja atau dikembalikan, atau akan terjadi realisasi pengecualian dengan cara yang khusus.

Contoh paling sederhana menciptakan kesalahan mungkin terlihat seperti ini:

if (null ==)

melemparkan NullPointerException baru ();

Di sini, variabel diperiksa di inisialisasi, yaitu, adalah bukan apakah referensi ke objek null. Jika situasi ini telah muncul dan perlu penanganan khusus, eksepsi dilemparkan oleh lemparan NullPointerException baru ().

Beberapa rincian tentang kata kunci

Ketika berhadapan dengan pengecualian seringkali diperlukan untuk menggunakan Java kata kunci untuk merujuk pada tindakan tertentu. Ini bahasa lima program mereka:

  • Mencoba. Kata kunci ini sudah terpenuhi, dan itu berarti transisi ke bagian kode yang dapat melempar pengecualian. Blok kawat gigi terbatas {}.
  • Tangkapan. Ini memotong jenis pengecualian yang diinginkan dan menanganinya secara tepat.
  • Akhirnya. kata kunci ini adalah opsional dan digunakan untuk melakukan bagian tertentu dari kode, yang diperlukan pula, bahkan jika tidak ada pengecualian tidak tertangkap. Ditambahkan langsung setelah blok try.
  • Lemparkan - memungkinkan Anda membuat pengecualian Java dari mana saja.
  • Melempar - kata kunci yang ditempatkan dalam metode tanda tangan. Ini berarti bahwa kode berikut dapat melempar pengecualian jenis ini Java. tanda ini berfungsi sebagai sinyal untuk pengembang yang perlu diingat - metode ini tidak dapat bekerja seperti yang diharapkan dari dirinya.

Penangkapan dengan mencoba

Rilis untuk pengecualian Java, secara alami mengasumsikan bahwa hal itu akan ditangani dengan cara khusus. Cara yang paling nyaman untuk melakukannya, jika bagian kode dipagari di blok. Yang mungkin berisi pengecualian. Ketika Anda menjalankan kode ini, mesin virtual akan menemukan situasi yang tak terduga, memahami bahwa ada blok kritis dan transfer kontrol ke stasiun dengan pengolahan.

Kode Java dibungkus dalam blok try khusus, di mana mungkin menjadi pengecualian. Dengan demikian, ia menempatkan beberapa situasi tak terduga yang akan ditangkap di tempat yang sama, bukan kode raspolzayas.

Kode yang paling khas untuk unit pengolahan adalah sebagai berikut:

try {

// Berikut adalah beberapa kode yang mungkin menghasilkan pengecualian

} Catch (Tip_isklyucheniya_1 identifikator_1) {

// Di sini ada pengecualian penanganan, sesuai dengan jenis dan kondisi;

} Catch (Tip_isklyucheniya_2 identifikator_2) {

// Di sini ada pengecualian penanganan, sesuai dengan jenis dan kondisi;

}

Kata Kunci menangkap melaporkan kode itu, dan scan untuk pengecualian, harus diperlakukan seperti yang dijelaskan di bawah ini, asalkan sesuai dengan jenisnya. pengenal dapat digunakan dalam mengolah blok kode sebagai argumen.

akhirnya

Seperti menjadi jelas dari bab sebelumnya, menangkap blok menangkap pengecualian dan memproses mereka. Tapi sangat sering muncul situasi di mana harus menjalankan beberapa kode, terlepas dari apakah mereka tertangkap kesalahan. Untuk ini ada kata kunci akhirnya. Hal ini digunakan untuk meningkatkan nilai-nilai dari berbagai counter, menutup file atau koneksi jaringan.

Plot ini menyajikan beberapa blok catch diciptakan metode menangkap pengecualian. Sebagai contoh, kode yang terdapat dalam mencoba menghasilkan situasi yang tak terduga seperti Cold. Kemudian, konsol akan ditampilkan ekspresi «Tertangkap dingin!» Dan «Apakah itu sesuatu untuk menghibur tentang?». Artinya, akhirnya blok dijalankan dalam hal apapun.

Bahkan, cara untuk menghindari memicu akhirnya ada. Hal ini terhubung dengan selesainya mesin virtual. Menemukan cara untuk menerapkannya, adalah mungkin di Internet ruang terbuka.

kata kunci throw

Lemparan menghasilkan pengecualian. Sintaks-nya adalah sebagai berikut:

melemparkan NewException baru ();

Ada dibuat pengecualian baru dengan jenis NewException (). Sebagai jenis dapat digunakan sudah termasuk dalam kelas perpustakaan Java standar dan sebelumnya ditetapkan oleh pengembang produksi sendiri.

Desain ini merupakan bagian dari deskripsi metode apapun, yang panggilan maka harus terjadi dalam blok try, agar dapat mencegat itu.

Kata kunci melempar

Bagaimana jika dalam proses pengembangan situasi di mana metode ini dapat membuang pengecualian, tetapi tidak mampu menangani dengan baik. Untuk tujuan ini, dalam metode tanda tangan menentukan kata melempar dan jenis mungkin pengecualian.

Label ini adalah semacam indikator untuk pengembang klien bahwa metode ini tidak mampu menangani pengecualian yang sama mereka. Selain itu, jika jenis error diperiksa, maka compiler akan memaksa secara eksplisit meminta untuk itu.

Cobalah untuk sumber

Java versi 7 pengembang telah menyertakan sebuah inovasi besar, sebagai blok pengobatan dicoba dengan sumber daya.

Banyak objek diciptakan di Jawa, setelah digunakan harus ditutup untuk melestarikan sumber daya. Sebelumnya itu harus mempertimbangkan hal ini dan menghentikan kasus ini secara manual. Sekarang, bagaimanapun, mereka muncul antarmuka AutoClosable. Ini membantu untuk secara otomatis menutup objek yang sudah digunakan ditempatkan di blok try. Melalui pendekatan ini telah menjadi lebih mudah untuk menulis kode di mudah dibaca meningkat secara signifikan.

Kelas sendiri pengecualian Java

Pencipta bahasa pemrograman yang dijelaskan memperhitungkan banyak aspek dari jenis desain keadaan darurat. Namun, semua pilihan untuk mencegah hasil dari peristiwa tidak akan bekerja, sehingga di Jawa dilaksanakan kemampuan untuk mendefinisikan pengecualian mereka sendiri, adalah tepat untuk kebutuhan kode tertentu.

Cara paling sederhana untuk membuat - untuk mewarisi dari yang paling sesuai dengan konteks objek.

Ada kebetulan mewarisi dari Exception, kelas yang digunakan untuk mendefinisikan pengecualian Anda sendiri. Dalam MyException memiliki dua konstruktor - default, yang kedua - dengan argumen tipe msg String.

Kemudian, dalam metode f FullConstructors kelas umum dilaksanakan, yang berisi tanda tangan melempar MyException. Kata kunci ini berarti bahwa f dapat membuang seperti Java MyException pengecualian. Selanjutnya, dalam tubuh metode yang dihasilkan informasi teks output ke konsol itu sendiri dan generasi MyException yang sebenarnya, oleh lemparan.

Metode kedua adalah sedikit berbeda dari yang pertama bahwa ketika Anda membuat pengecualian, itu melewati parameter string, yang akan tercermin dalam konsol pada penangkapan. Di utama jelas bahwa f () dan g () ditempatkan dalam pengecekan mencoba dan menangkap kata kunci dikonfigurasi untuk menangkap MyException. Hasil pengolahan adalah untuk menampilkan pesan kesalahan ke konsol:

Oleh karena itu datang untuk menambahkan pengecualian Jawa, dengan tangan sendiri.

pengecualian Arsitektur

Seperti dengan semua benda di Jawa, pengecualian juga mewarisi dan memiliki struktur hirarkis. Unsur akar dari semua kesalahan dilemparkan dalam bahasa pemrograman ini adalah kelas java.lang.Throwable. Diwarisi dari dia dua jenis - Kesalahan dan Exception.

Kesalahan - sinyal kesalahan kritis dan pengecualian Jawa dicentang. Interception dan pengolahan data seperti dalam kebanyakan kasus terjadi pada tahap desain dan tidak membutuhkan memperkenalkan dalam kode aplikasi akhir.

Kelas yang paling umum digunakan untuk membuat dan menganalisis pengecualian adalah Exception. Yang, pada gilirannya, dibagi menjadi beberapa cabang, termasuk RuntimeException. Dengan RuntimeException pengecualian runtime, yaitu, terjadi selama program. Semua kelas yang berasal dari itu adalah diverifikasi.

Sering ada pengecualian

Dalam pengecualian Java, daftar yang disajikan di bawah ini, digunakan paling sering, sehingga Anda harus menjelaskan masing-masing secara rinci:

  • ArithmeticException. Ini termasuk kesalahan yang terkait dengan operasi aritmatika. Yang paling mencolok contoh - pembagian dengan nol.
  • ArrayIndexOutOfBoundsException - banding ke nomor elemen array yang melebihi total panjangnya.
  • ArrayStoreException - upaya untuk menetapkan jenis elemen tidak kompatibel dari array.
  • ClassCastException - upaya untuk membawa salah satu jenis yang lain.
  • IllegalArgumentException - menggunakan argumen yang salah dalam metode panggilan.
  • NegativeArraySizeException - pengecualian ketika Anda membuat sebuah array berukuran negatif.
  • NullPointerException - penyalahgunaan referensi untuk null.
  • NumberFormatException - terjadi ketika konversi string yang salah ke integer.
  • UnsupportedOperationException - Operasi tidak didukung.

Contoh-contoh ini mewakili jenis pengecualian Jawa dicentang. Tapi begitu terlihat diperiksa:

  • ClassNotFoundException - Kelas tidak ditemukan.
  • IllegalAcccessException - membatasi akses ke kelas.
  • InterruptedException - gangguan aliran tersebut.
  • NoSuchFieldException - tidak ada bidang yang diperlukan.

Interpretasi pengecualian

Berbicara tentang pengecualian sering ditemui Perlu dicatat bahwa penafsiran mereka dalam desain, dapat dirasakan secara tidak benar. Berikutnya adalah daftar pendek yang menjelaskan secara lebih rinci, mana mungkin ada situasi yang tak terduga.

NullPointerException. Kasus ini pertama ketika ada pengecualian, adalah untuk menarik referensi ke objek yang sama dengan nol. Hal ini juga meluas ke metode zero kelas misalnya. NullPointerException dapat dibuang dalam kasus memperoleh panjang array nol sama. Untuk menghindari situasi seperti berkala akan memeriksa situs di nol.

ArrayIndexOutOfBoundsException. Setiap program tidak bisa eksis tanpa menggunakan array. Dengan demikian, sering jalan lain untuk dapat menghasilkan dan kesalahan. Pengecualian terjadi ketika pengembang mencoba mengakses elemen array yang tidak dalam daftar indeks. Sebagai contoh, nilai yang diminta di atas atau di bawah nol panjang. Sangat sering adalah hasil dari fakta bahwa dalam array dimulai dengan skor nol.

temuan

Penanganan pengecualian Java - lingkungan alat yang ampuh, yang sangat memudahkan pekerjaan programmer dan memungkinkan dia untuk membuat bersih dan tanpa kesalahan kode. Pada aplikasi fungsi seberapa halus dan stabil tergantung pada status dan reputasi pengembang.

Tentu saja, dalam kurang lebih program sederhana untuk melacak situasi normal jauh lebih mudah. Namun dalam kompleks otomatis besar untuk beberapa ratus ribu baris itu hanya mungkin sebagai hasil dari pengujian jangka panjang dan debugging.

Untuk kesalahan pengecualian Jawa dari yang timbul dalam beberapa aplikasi, beberapa perusahaan menawarkan hadiah saat mereka menemukan penggemar. Terutama dihargai oleh orang-orang yang menyebabkan pelanggaran terhadap software kebijakan keamanan.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 delachieve.com. Theme powered by WordPress.