Jadual Kandungan
Gunakan blok cuba
Sentiasa membersihkan akhirnya
Gunakan sumber cuba-dengan sumber-sumber auto
Buang pengecualian apabila perlu
Buat pengecualian tersuai
Amalan terbaik
Rumah Java javaTutorial Bagaimana anda menangani pengecualian di Java?

Bagaimana anda menangani pengecualian di Java?

Sep 23, 2025 am 04:44 AM
java Pengendalian pengecualian

Pengendalian pengecualian Java menangkap pengecualian melalui blok percubaan, akhirnya blok memastikan pembersihan sumber, cuba-resources secara automatik menguruskan sumber, melemparkan pengecualian, pengecualian adat untuk menangani kesilapan tertentu, dan mengikuti amalan terbaik seperti menangkap pengecualian tertentu, tidak mengabaikan pengecualian, dan mengelakkan blok tangkapan kosong, dengan itu mencapai kod yang rapi dan mengekalkan.

Bagaimana anda menangani pengecualian di Java?

Pengendalian pengendalian di Java adalah bahagian teras menulis kod yang mantap dan boleh dipercayai. Matlamatnya adalah untuk menguruskan keadaan yang tidak dijangka atau kesilapan semasa pelaksanaan program tanpa merosakkan permohonan. Inilah cara anda biasanya mengendalikan pengecualian:

Gunakan blok cuba

Cara yang paling biasa untuk mengendalikan pengecualian adalah dengan membungkus kod yang berpotensi bermasalah dalam blok try dan menangkap pengecualian dengan satu atau lebih blok catch .

 Cuba {
    int hasil = 10/0;
} tangkapan (ArithmeticException e) {
    System.out.println ("Tidak boleh membahagikan sifar:" e.getMessage ());
}

Anda boleh menangkap pelbagai pengecualian, terutamanya berguna apabila pelbagai jenis pengecualian memerlukan pengendalian yang berbeza.

 Cuba {
    int [] arr = int baru [5];
    arr [10] = 1;
} menangkap (ArrayIndexOutOfBoundSexception e) {
    System.out.println ("Indeks Out of Bounds:" E.GetMessage ());
} menangkap (pengecualian e) {
    System.out.println ("Kesalahan yang tidak dijangka berlaku:" E.getMessage ());
}

Sentiasa membersihkan akhirnya

Blok finally berjalan tanpa mengira sama ada pengecualian dibuang atau ditangkap. Ia biasanya digunakan untuk pembersihan, seperti penutup fail atau sambungan rangkaian.

 FileInputStream fis = null;
Cuba {
    fis = FileInputStream baru ("file.txt");
    // Baca fail
} menangkap (ioException e) {
    System.out.println ("Kesalahan io:" e.getMessage ());
} akhirnya {
    jika (fis! = null) {
        Cuba {
            fis.close ();
        } menangkap (ioException e) {
            System.out.println ("gagal menutup fail:" e.getMessage ());
        }
    }
}

Nota: Dalam Java Moden, anda lebih suka cuba-dengan-sumber untuk pembersihan automatik.

Gunakan sumber cuba-dengan sumber-sumber auto

Mana-mana kelas yang melaksanakan AutoCloseable (seperti sungai, pembaca, soket) boleh digunakan dalam pernyataan cubaan-dengan-sumber. Sumbernya ditutup secara automatik selepas blok cuba.

 cuba (fileInputStream fis = new FileInputStream ("file.txt")) {
    // Gunakan aliran
} menangkap (ioException e) {
    System.out.println ("Fail membaca ralat:" e.getMessage ());
}
// fis ditutup secara automatik di sini

Anda boleh memasukkan pelbagai sumber:

 Cuba (
    FileInputStream fis = FileInputStream baru ("input.txt");
    FileOutputStream Fos = FileOutputStream baru ("output.txt")
) {
    // Data proses
} menangkap (ioException e) {
    System.out.println ("Pengecualian IO:" E.getMessage ());
}

Buang pengecualian apabila perlu

Sekiranya kaedah tidak dapat mengendalikan pengecualian itu sendiri, ia boleh menyebarkannya menggunakan throws dalam tandatangan kaedah.

 public void readFile (nama fail rentetan) melemparkan ioException {
    FileInputStream fis = FileInputStream baru (nama fail);
    // fail proses
}

Pemanggil kaedah ini mesti mengendalikan atau melemparkan semula pengecualian.

Buat pengecualian tersuai

Untuk kesilapan khusus aplikasi, tentukan kelas pengecualian anda sendiri dengan memperluaskan Exception (diperiksa) atau RuntimeException (tidak terkawal).

 Kelas InvaliduserException memanjangkan pengecualian {
    InvaliduserException awam (Mesej String) {
        super (mesej);
    }
}

// Penggunaan
jika (pengguna == null) {
    membuang InvaliduserException baru ("Pengguna tidak boleh menjadi batal");
}

Amalan terbaik

  • Menangkap pengecualian tertentu dan bukannya umum.
  • Jangan mengabaikan pengecualian -selalu log atau mengendalikannya secara bermakna.
  • Elakkan blok tangkapan kosong.
  • Gunakan pengecualian yang tidak terkawal ( RuntimeException ) untuk kesilapan pengaturcaraan (contohnya, pemeriksaan null).
  • Gunakan pengecualian yang diperiksa untuk keadaan boleh diperolehi semula (contohnya, fail tidak dijumpai).
  • Pengecualian dokumen yang dibuang oleh kaedah anda menggunakan @throws di Javadoc.

Pada asasnya, pengendalian pengecualian Java memberi anda kawalan ke atas aliran ralat sambil mengekalkan kod yang boleh dibaca dan dikekalkan. Ia bukan hanya tentang menangkap kesilapan -ini tentang mengetahui bila hendak mengendalikan, bila hendak menyebarkan, dan bagaimana untuk membersihkan dengan betul.

Atas ialah kandungan terperinci Bagaimana anda menangani pengecualian di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara memaksa laman web skala oleh UC Browser_UC Browser's Skala Web Laman Web oleh Penyemak Imbas UC Cara memaksa laman web skala oleh UC Browser_UC Browser's Skala Web Laman Web oleh Penyemak Imbas UC Sep 24, 2025 pm 04:54 PM

Pertama, aktifkan fungsi skala terbina dalam penyemak imbas UC, pergi ke Tetapan → Layari Tetapan → Font dan Typesetting atau Page Scaling, dan pilih nisbah pratetap atau peratusan tersuai; Kedua, anda boleh memaksa saiz paparan halaman dengan membuka atau mencubit gerak isyarat dengan dua jari; Untuk laman web yang menyekat skala, anda boleh meminta versi desktop laman web untuk membuka kunci sekatan; Pengguna lanjutan juga boleh mengubah suai atribut Viewport dengan melaksanakan kod JavaScript di bar alamat untuk mencapai kesan skala paksa yang lebih fleksibel.

Bagaimana untuk mendapatkan nama kaedah panggilan di Java? Bagaimana untuk mendapatkan nama kaedah panggilan di Java? Sep 24, 2025 am 06:41 AM

Jawapannya ialah menggunakan thread.currentThread ().

Penggunaan CPU Tinggi Microsoft Edge Penggunaan CPU Tinggi Microsoft Edge Sep 24, 2025 am 12:17 AM

Edge menduduki CPU yang tinggi kerana penggunaan sumber yang tinggi berdasarkan kernel kromium, ditambah dengan faktor-faktor seperti halaman multi-tab, plug-in berjalan, skrip laman web dan mekanisme rendering; Penyelesaian termasuk: 1. Tutup sambungan yang tidak perlu untuk mengurangkan beban latar belakang; 2. Dayakan fungsi "Tag Tidur" untuk mengurangkan penggunaan sumber tag terbiar; 3. Bersihkan proses latar belakang dan tutup tetapan yang berkaitan dengan GPU; 4. Kemas kini penyemak imbas dan sistem untuk memastikan keserasian dan pengoptimuman prestasi.

Bagaimana menggunakan kelas pilihan untuk mengelakkan NullPointerException di Java? Bagaimana menggunakan kelas pilihan untuk mengelakkan NullPointerException di Java? Sep 25, 2025 am 06:04 AM

Kelas pilihan digunakan untuk mengendalikan nilai -nilai yang selamat yang mungkin menjadi batal, mengelakkan pengecualian penunjuk null. 1. Buat contoh menggunakan pilihan. Nullable untuk mengendalikan nilai null. 2. Semak dan nilai akses melalui ISPRESENT atau Keselamatan IFPRESENT untuk mengelakkan panggilan langsung untuk menyebabkan pengecualian. 3. Gunakan Orelse dan Orelseget untuk memberikan nilai lalai, atau gunakan Orelsethrow untuk membuang pengecualian tersuai. 4. Menukar atau menapis nilai melalui operasi peta dan penapis rantaian untuk meningkatkan kebolehbacaan kod dan ketahanan.

Bagaimana untuk mendapatkan kelas objek di Java? Bagaimana untuk mendapatkan kelas objek di Java? Sep 26, 2025 am 04:58 AM

Gunakan kaedah getClass () untuk mendapatkan kelas runtime objek, seperti str.getClass () untuk mengembalikan objek kelas; Untuk jenis, anda boleh menggunakan sintaks string.class secara langsung. Kelas kelas menyediakan kaedah seperti getName (), getImpleName () untuk mendapatkan maklumat kelas, seperti num.getClass (). GetImpleName () untuk output integer.

Bagaimana cara menggunakan kaedah ganti pada rentetan di Java? Bagaimana cara menggunakan kaedah ganti pada rentetan di Java? Sep 24, 2025 am 02:53 AM

DiaplacemethodinjavareturnsanewstringwithalloccurrencesofspecifiedCharactersorsorsreplaced.ithastwoforms: OneForReplacingsinglecharactersandanotherforsubstrings.sincestringsareimmutable, theoriginalremainsuncle, "

Bagaimana untuk membuat pelbagai dimensi di Java? Bagaimana untuk membuat pelbagai dimensi di Java? Sep 25, 2025 am 05:37 AM

Atwo-dimensialarrayinjavaisanarrayofarrays, declaredwithtwobrackets, likeint [] [] matriks, andcanbeinitializedwithvaluesorusingnew;

Bagaimana cara menggunakan kata kunci VAR untuk pembolehubah tempatan di Java? Bagaimana cara menggunakan kata kunci VAR untuk pembolehubah tempatan di Java? Sep 23, 2025 am 06:20 AM

ThevarkeywordinjavaenableslocalvariableTypeinference, diperkenalkanInjava10.itletsthecompilerinferthetypefromtheinitializer, meningkatkan kebolehbacaan yang digunakan

See all articles