KomputerPengaturcaraan

Java: pengecualian dan pengendalian mereka

Mana-mana program akan beroperasi secara stabil hanya jika kod sumber dengan debugged, dan tidak ada syarat yang boleh menyebabkan keadaan yang tidak diduga. Proses menangkap kegagalan mungkin dijalankan pada peringkat pengaturcaraan. Untuk melakukan ini, pemaju mengambil kira semua kesudahan yang dijangka dan cuba untuk menghadkan kesan kesilapan itu supaya ia tidak boleh campur tangan dengan operasi program, atau membawa kepada runtuh.

Apabila anda mungkin perlu pengendalian pengecualian

Di Jawa, pengecualian boleh disebabkan oleh input pengguna yang tidak betul, tidak perlu untuk sumber atau tiba-tiba program rangkaian pemotongan. Untuk kegunaan yang selesa dicipta oleh pembangun aplikasi, anda perlu mengawal berlakunya situasi kecemasan. pengguna tidak perlu menunggu untuk berhenti permohonan, kehilangan data akibat daripada pengecualian tak dikendali, atau hanya sebahagian daripada mesej muncul menyatakan bahawa sesuatu yang tidak kena.

Pengendalian Java pengecualian

Apa yang perlu dipertimbangkan? Bahasa Jawa mempunyai fungsi pengendalian pengecualian terbina dalam sendiri. Sudah tentu, sebahagian besar kesilapan ditangkap oleh peringkat kompilasi lain, sistem secara automatik akan memberitahu bahawa penggunaan ia tidak lagi mungkin. Tetapi ada jenis ini kecuali yang berlaku pada masa jalanan. pemaju akan dapat menjangka dan untuk mereka bentuk kod supaya ia tidak menyebabkan ralat, dan dikendalikan dengan cara yang khas dan menyerahkan kawalan ke cawangan lain.

Di Jawa, ini dikenakan oleh pengkompil untuk menangkap pengecualian, jadi masalah yang biasa dikenali dan mempunyai corak pelaksanaan standard.

pengecualian yang biasa

Contoh yang paling mudah, di mana anda boleh mendapatkan pengecualian - bahagian ini. Walaupun kesederhanaan, dari segi, sebagai pembahagi, mungkin sifar, yang akan menyebabkan ralat. Nah, jika ia adalah mungkin untuk meramalkan kemunculan masa lalu dan menghalang. Tetapi pilihan ini tidak sentiasa ada, jadi menangkap pengecualian perlu dianjurkan secara langsung dalam acara "pecah dengan sifar".

Mekanisme Java untuk memintas ralat pemprosesan kelihatan seperti ini:

  • objek pengecualian timbunan dicipta, serta apa-apa lain;
  • kursus semula jadi program terganggu;
  • mekanisme pengecualian yang cuba untuk mencari cara alternatif untuk terus kod;
  • Cari pelaksanaan yang selamat program dalam pemproses, kerja atau dipulihkan, atau akan berlaku merealisasikan pengecualian dalam cara yang istimewa.

Contoh yang paling mudah untuk mewujudkan ralat mungkin kelihatan seperti ini:

jika (a null ==)

membuang NullPointerException baru ();

Di sini, pembolehubah yang diperiksa di pengawalan, iaitu, bukan sama ada rujukan kepada objek null. Jika keadaan ini timbul dan memerlukan pengendalian khas, pengecualian dibuang oleh lontaran NullPointerException baru ().

butiran tentang kata kunci

Apabila berurusan dengan pengecualian adalah perlu untuk menggunakan Java kata kunci untuk merujuk kepada tindakan tertentu. Ini bahasa pengaturcaraan lima mereka:

  • Cuba. Kata kunci ini telah dipenuhi, dan ia bermakna peralihan ke sebahagian daripada kod yang boleh membuang pengecualian. Blok pendakap terhad {}.
  • Tangkap. Ia memintas jenis pengecualian yang dikehendaki dan mengendalikan ia dengan sewajarnya.
  • Akhirnya. Kata kunci ini adalah pilihan dan digunakan untuk melakukan bahagian tertentu kod, yang diperlukan anyway, walaupun tidak terkecuali tidak ditangkap. Ditambah secara langsung selepas blok cuba.
  • Membuang - membolehkan anda membuat pengecualian Java dari mana sahaja.
  • Melemparkan - kata kunci yang diletakkan dalam kaedah tandatangan. Ia bermakna bahawa kod berikut boleh membuang pengecualian jenis ini Jawa. tanda ini berfungsi sebagai isyarat kepada pemaju yang perlu diingat - kaedah tidak boleh bekerja seperti yang diharapkan beliau.

Penangkapan dengan cuba

Lepaskan untuk pengecualian Java, secara semula jadi menganggap bahawa ia akan dikendalikan dengan cara yang istimewa. Cara yang paling mudah untuk melakukannya, jika bahagian kod itu dipagari dalam satu blok. Yang mungkin mengandungi pengecualian. Apabila anda menjalankan kod ini, mesin maya akan mencari keadaan yang tidak dijangka, memahami bahawa terdapat satu blok kritikal dan pemindahan mengawal ke stesen dengan pemprosesan.

Kod Java dibalut di dalam blok cuba khas, di mana mungkin pengecualian. Oleh itu, dia meletakkan beberapa keadaan yang tidak dijangka yang akan ditangkap di tempat yang sama, tidak kod raspolzayas.

Kod yang paling biasa untuk unit pemprosesan adalah seperti berikut:

cuba {

// Berikut adalah beberapa kod yang boleh menjana pengecualian

} Tangkap (Tip_isklyucheniya_1 identifikator_1) {

// Di sini ada pengendalian pengecualian, mengikut jenis dan syarat-syarat;

} Tangkap (Tip_isklyucheniya_2 identifikator_2) {

// Di sini ada pengendalian pengecualian, mengikut jenis dan syarat-syarat;

}

Kata kunci tangkapan melaporkan kod itu, dan imbas untuk pengecualian, untuk dirawat seperti yang dinyatakan di bawah, dengan syarat ia mematuhi jenisnya. pengecam boleh digunakan dalam pemprosesan blok kod sebagai argumen.

akhirnya

Kerana ia menjadi jelas dari bab yang lepas, blok menangkap menangkap pengecualian dan memprosesnya. Tetapi seringkali timbul situasi di mana perlu menjalankan beberapa kod, tidak kira sama ada mereka telah ditangkap kesilapan. Untuk ini terdapat kata kunci akhirnya. Ia digunakan untuk meningkatkan nilai-nilai pelbagai kaunter, menutup fail atau sambungan rangkaian.

plot ini membentangkan beberapa blok tangkapan mencipta kaedah menangkap pengecualian. Sebagai contoh, kod yang terkandung dalam percubaan menghasilkan keadaan yang tidak dijangka seperti Dingin. Kemudian, konsol akan dipaparkan ungkapan «Terperangkap sejuk!» Dan «Adakah itu sesuatu untuk berasa gembira?». Iaitu, akhirnya blok dilaksanakan di mana-mana.

Malah, cara untuk mengelakkan mencetuskan akhirnya ada. Ia adalah berkaitan dengan siapnya mesin maya. Mencari bagaimana untuk melaksanakannya, ia adalah mungkin di Internet kawasan lapang.

kata kunci Baling

Baling menjana pengecualian. sintaks adalah seperti berikut:

membuang NewException baru ();

Terdapat dicipta pengecualian baru untuk jenis NewException yang (). Sebagai jenis boleh digunakan sudah termasuk dalam standard kelas perpustakaan Jawa dan sebelum ini ditakrifkan oleh pemaju pengeluaran sendiri.

reka bentuk ini adalah sebahagian daripada perihalan apa-apa kaedah, yang panggilan tersebut kemudiannya perlu berlaku dalam blok percubaan, untuk dapat memintas ia.

Kata-kata melemparkan

Bagaimana jika dalam proses pembangunan satu keadaan di mana kaedah itu boleh membuang pengecualian, tetapi tidak mampu untuk mengendalikan dengan betul. Untuk tujuan ini, dalam kaedah tandatangan menyatakan perkataan melemparkan dan jenis pengecualian mungkin.

label ini adalah sejenis penunjuk untuk pemaju pelanggan bahawa kaedah itu tidak mampu untuk mengendalikan pengecualian yang sama mereka. Di samping itu, jika jenis ralat yang disemak, kemudian pengkompil akan memaksa jelas memintanya.

Cuba untuk sumber

Java versi 7 pemaju telah merangkumkan satu inovasi utama, sebagai blok rawatan cuba dengan sumber.

Banyak objek yang dicipta di Jawa, selepas digunakan perlu ditutup untuk memelihara sumber. Sebelum ini ia terpaksa mengambil kira perkara ini dan berhenti keadaan ini secara manual. Sekarang, bagaimanapun, mereka muncul antara muka AutoClosable. Ia membantu untuk menutup objek yang telah digunakan diletakkan di dalam blok cuba secara automatik. Melalui pendekatan ini, ia telah menjadi lebih mudah untuk menulis kod dalam kebolehbacaan yang meningkat dengan ketara.

kelas sendiri Java pengecualian

Pencipta bahasa pengaturcaraan yang dinyatakan mengambil kira banyak aspek jenis reka bentuk kecemasan. Walau bagaimanapun, semua pilihan untuk mengelakkan hasil peristiwa tidak akan bekerja, jadi di Jawa dilaksanakan keupayaan untuk mentakrifkan pengecualian mereka sendiri, ia adalah sesuai untuk keperluan kod tertentu.

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

Sana ada mewarisi Pengecualian, kelas yang digunakan untuk mentakrifkan pengecualian anda sendiri. Dalam MyException mempunyai dua pengeluar - lalai, kedua - dengan String hujah jenis msg.

Kemudian, dalam kaedah f FullConstructors kelas awam yang dilaksanakan, yang mengandungi tanda tangan melemparkan MyException. Kata kunci ini bermakna bahawa f boleh membuang seperti Java MyException terkecuali. Selanjutnya, di dalam badan Cara yang dihasilkan maklumat teks output ke konsol itu sendiri dan MyException generasi yang sebenar, dengan membuang.

Kaedah kedua adalah sedikit berbeza daripada yang pertama yang apabila anda membuat pengecualian, ia meluluskan parameter tali, yang akan dapat dilihat dalam konsol di perhatian. Di utama adalah jelas bahawa f () dan g () diletakkan di dalam semakan cuba dan menangkap kata kunci dikonfigurasikan untuk menangkap MyException. Hasil daripada pemprosesan adalah untuk memaparkan mesej ralat konsol:

Oleh itu, ia datang untuk menambah pengecualian Java, dengan tangan sendiri.

pengecualian Architecture

Seperti semua objek di Jawa, pengecualian juga diwarisi dan mempunyai struktur hierarki. Elemen punca segala kesilapan dibuang dalam bahasa pengaturcaraan ini adalah kelas java.lang.Throwable. Diwarisi daripada dua jenis - Ralat dan Pengecualian.

Ralat - isyarat ralat kritikal dan Java pengecualian tidak terkawal. Pemintasan dan pemprosesan data seperti dalam kebanyakan kes berlaku pada peringkat reka bentuk dan tidak memerlukan memperkenalkan kod permohonan akhir.

Kelas yang paling biasa digunakan untuk mencipta dan menganalisis pengecualian adalah Pengecualian. Yang, seterusnya, dibahagikan kepada beberapa cawangan, termasuk RuntimeException. Oleh RuntimeException pengecualian runtime, iaitu, yang berlaku semasa program ini. Semua kelas yang diperolehi daripada ia adalah tidak dapat disahkan.

Sering terdapat pengecualian

Dalam pengecualian Java, senarai yang dibentangkan di bawah, paling kerap digunakan, jadi anda hendaklah menerangkan setiap daripada mereka secara terperinci:

  • ArithmeticException. Ini termasuk kesilapan yang berkaitan dengan operasi aritmetik. Yang paling jelas contoh - bahagian ini dengan sifar.
  • ArrayIndexOutOfBoundsException - rayuan kepada beberapa elemen array yang melebihi jumlah panjangnya.
  • ArrayStoreException - Cubaan untuk menetapkan jenis elemen yang tidak serasi array.
  • ClassCastException - satu usaha untuk membawa salah satu jenis yang lain.
  • IllegalArgumentException - menggunakan hujah yang salah dalam panggilan kaedah.
  • NegativeArraySizeException - pengecualian apabila anda membuat pelbagai saiz negatif.
  • NullPointerException - penyalahgunaan rujukan kepada nol.
  • NumberFormatException - berlaku apabila penukaran rentetan salah untuk integer.
  • UnsupportedOperationException - operasi tidak disokong.

Contoh-contoh ini mewakili jenis pengecualian Java tidak terkawal. Tetapi begitu kelihatan disemak:

  • ClassNotFoundException - Kelas tidak ditemui.
  • IllegalAcccessException - menyekat akses kepada kelas.
  • InterruptedException - gangguan aliran.
  • NoSuchFieldException - tidak ada medan yang diperlukan.

Tafsiran pengecualian

Bercakap pengecualian kerap dihadapi harus diperhatikan bahawa tafsiran mereka dalam reka bentuk, boleh dianggap tidak betul. Berikut adalah senarai pendek menjelaskan dengan lebih terperinci, di mana mungkin terdapat keadaan yang tidak dijangka.

NullPointerException. Kes pertama apabila terdapat pengecualian, adalah untuk merayu kepada rujukan kepada objek yang sama dengan nol. Tetapi meliputi sifar kaedah kelas misalnya. NullPointerException boleh dibuang dalam hal mendapatkan lokasi null panjang yang sama. Untuk mengelakkan keadaan seperti ini akan memeriksa laman web di nol.

ArrayIndexOutOfBoundsException. Mana-mana program tidak boleh wujud tanpa menggunakan tatasusunan. Oleh itu, jalan yang kerap ia boleh menjana dan kesilapan. Pengecualian berlaku apabila pemaju yang cuba untuk mengakses elemen tatasusunan yang tiada dalam senarai indeks. Sebagai contoh, nilai yang diminta adalah atas atau di bawah panjang sifar. Selalunya adalah hasil daripada fakta bahawa dalam array bermula dengan skor sifar.

penemuan

Pengendalian pengecualian Java - persekitaran alat yang berkuasa, yang amat memudahkan kerja-kerja programmer dan membolehkan beliau untuk membuat yang bersih dan tidak mempunyai kesilapan kod. Atas permohonan fungsi bagaimana lancar dan stabil bergantung kepada status dan reputasi pemaju.

Sudah tentu, dalam lebih kurang program yang mudah untuk mengesan keadaan yang tidak normal lebih mudah. Tetapi di kompleks automatik besar untuk beberapa ratus ribu garisan ia adalah mungkin hanya hasil daripada ujian jangka panjang dan debugging.

Untuk kesilapan pengecualian Java yang timbul dalam beberapa aplikasi, beberapa syarikat menawarkan ganjaran apabila mereka mendapati peminat. Terutamanya dihargai oleh mereka yang menyebabkan pelanggaran perisian dasar keselamatan.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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