Isi kandungan:
Video: From C to Python by Ross Rheingans-Yoo 2024
Kesilapan dalam aplikasi Java boleh berlaku pada pelbagai masa. Walau bagaimanapun, anda boleh mengelaskan secara meluas apabila ralat akan berlaku dalam dua kategori, pada masa dan runtime compile, seperti yang diterangkan dalam bahagian berikut.
Kesalahan masa kompilasi
Pengkompil menukarkan kod aplikasi anda ke kod byte Java. Semasa proses ini, ia memerlukan kod yang boleh dibaca manusia yang anda tulis dan mengubahnya menjadi sesuatu yang difahami oleh Java Runtime Environment (JRE).
Untuk melaksanakan proses ini, pengkompil mesti mengurai kod tersebut, yang bermaksud ia membacanya dengan cara yang secara jelas menentukan tepat apa yang anda inginkan permohonan itu, ketika anda ingin melakukannya, dan bagaimana anda mahu tugas itu selesai. Sekiranya anda melanggar peraturan untuk menulis kod yang tidak jelas, pengkompil memaparkan mesej ralat. Mesej ini sebenarnya adalah satu pengecualian.
Parsing bermaksud membaca input yang anda berikan, seperti kod dalam bentuk yang boleh dibaca manusia, dan mengubahnya menjadi sesuatu yang lain, seperti kod byte Java. Aplikasi juga boleh menghuraikan input pengguna. Sebagai contoh, pengguna boleh menaip rentetan bahawa kod permohonan anda bertukar menjadi nombor.
Jadi, parsing adalah perbuatan membaca beberapa jenis input, mentafsirkan input dengan cara tertentu, dan kemudian menghasilkan output berdasarkan input yang ditafsirkan. Parser menghasilkan ralat ketika input bukanlah yang dijangkakan.
Sebagai contoh, jika pengguna memasukkan rentetan yang mengandungi huruf C, dan anda mengharapkan rentetan yang mengandungi nombor, seperti 123, parser akan menghasilkan pengecualian mengatakan bahawa input tidak betul.
Kesalahan masa kompilasi adalah yang paling mudah dikendalikan kerana pengkompil biasanya memberitahu anda dengan tepat apa yang salah dan di mana ralat telah berlaku. Walaupun maklumat tidak tepat, pengkompil akan sekurang-kurangnya membawa anda ke kawasan yang betul kod yang patah sehingga anda dapat mencari kesalahan yang terkandung.
Untuk memastikan semua orang memahami dengan tepat bagaimana bahasa Jawa sepatutnya berfungsi, pemaju membuat spesifikasi untuknya. Spesifikasi ini merangkumi elemen bahasa dalam bahasa khas yang dipanggil Backus-Naur Form (BNF). Menggunakan BNF adalah kaedah yang sangat tepat menggambarkan bahasa supaya tidak ada risiko salah tafsir oleh sesiapa pun.
Anda boleh melihat contoh BNF untuk bahasa Jawa di Jabatan Sains Komputer - Daimi. Jangan terlalu risau tentang membaca spesifikasi ini. Kebanyakan pemaju tidak pernah belajar mentafsirkan BNF untuk bahasa yang mereka gunakan - itulah domain pemaju pengkompil.
Runtime error
Compiler Java tidak dapat menemukan kesilapan dalam kod anda. Sekiranya bentuk kod adalah betul (iaitu, anda tidak membuat sebarang kesilapan dalam menaip unsur-unsur yang membuat aplikasi itu), pengkompil tidak akan mencari ralat. Sebagai contoh, jika anda menginisialisasi nilai angka kepada 5 bukannya 4, pengkompil tidak dapat mencari ralat untuk anda kerana pengkompil tidak tahu bahawa anda benar-benar dimaksudkan untuk mengetik 4. Jenis kesalahan ini membuat
ralat runtime - kesalahan yang berlaku pada satu ketika semasa pelaksanaan aplikasi. Kesilapan semasa boleh berlaku pada pelbagai masa. Sesetengah ralat lebih cenderung berlaku pada masa tertentu. Senarai berikut memberi anda beberapa idea tentang bila ralat runtime mungkin berlaku:
Inisialisasi:
-
Apabila aplikasi bermula dahulu - sebelum ia mempersembahkan apa-apa jenis antara muka kepada pengguna atau melakukan apa-apa kerja yang berguna - fasa permulaan. Ini adalah apabila menetapkan pembolehubah kepada jenis yang tidak betul atau cuba menggunakan pemboleh ubah sebelum anda memulakannya akan mendapat perhatian. Banyak ralat berkaitan sumber juga berlaku semasa inisialisasi kerana kebanyakan aplikasi membuka sumber yang diperlukan pada masa ini. Mod pengendalian:
-
Selepas aplikasi memulakan, ia dalam mod operasi. Jika ia mempunyai antara muka pengguna, ia mula berinteraksi dengan pengguna. Ini adalah masa yang paling penting untuk input pengguna. Anda juga akan mendapati pembolehubah permulaan yang salah pada masa ini kerana pengguna (atau penerima output aplikasi, seperti sistem) akan melihat bahawa output tidak betul. Permintaan pengguna untuk sumber, seperti fail data, juga membuat ralat pada masa ini.
Pemprosesan latar belakang:
-
Kesilapan pemprosesan latar belakang yang dihasilkan dari persekitaran (seperti hilangnya sambungan rangkaian), sumber yang hilang (seperti fail yang hilang), pemboleh ubah yang dimulakan dengan salah atau ralat dalam cara anda memberitahu aplikasi untuk melaksanakan tugas. Sesetengah tugas biasanya dilakukan di latar belakang daripada yang lain. Sebagai contoh, mencetak dokumen atau memuat turun sumber dari Internet biasanya dilakukan di latar belakang, sementara pengguna terus bekerja dengan aplikasi di latar depan.
Shutdown:
-
Apabila pengguna (termasuk akaun sistem) memberitahu aplikasi itu tidak lagi diperlukan, permohonan itu melalui fasa penutupan. Semasa fasa penutupan ini, aplikasi menutup fail dan melakukan kerja-kerja rumah lain yang memastikan aplikasi tidak meninggalkan keadaan yang bermasalah untuk sistem pengendalian. Kesilapan yang paling biasa yang boleh berlaku semasa fasa ini tidak melepaskan sumber daya yang digunakan oleh aplikasi anda dan tidak menyimpan data ke cakera. Sudah tentu, ralat pengekodan boleh berlaku pada bila-bila masa, dan fasa operasi ini tidak terkecuali. Anda boleh memberitahu aplikasi untuk menutup lima fail apabila hanya empat daripada mereka yang benar-benar terbuka.
JRE akan membentangkan kesilapan runtime yang mengesannya sebagai pengecualian. Walau bagaimanapun, JRE tidak akan menangkap setiap kesilapan dalam permohonan anda.Anda juga mesti melihat output aplikasi anda untuk menentukan sama ada output sepadan dengan jangkaan yang anda miliki untuk input yang diberikan.
Selain itu, penting untuk melihat keadaan mana-mana sumber yang anda gunakan untuk memastikan bahawa mereka tidak rosak dalam beberapa cara. Sebagai contoh, anda perlu memastikan bahawa apa-apa data yang anda mesti simpan dalam fail sebenarnya berakhir dalam fail apabila aplikasi anda dimatikan.
Java 8 mempunyai penekanan yang kuat terhadap keselamatan, yang bermaksud bahawa anda akan melihat lebih banyak contoh SecurityException ketika anda bekerja dengan aplikasi anda.
Melihat peningkatan pengecualian keselamatan tidak bermakna kod anda rosak atau bahawa Java 8 dipenuhi dengan pepijat - ini bermakna bahawa Java 8 secara automatik mengesan dan memberitahu anda tentang isu-isu yang boleh menyebabkan masalah keselamatan apabila orang menggunakan aplikasi anda.
Dokumentasi SecurityException muncul di Java. bersih. Sudah tentu, anda akan mahu mengetahui apa yang berlaku.