1. Tangkap Pengecualian Khusus
Sentiasa tangkap pengecualian yang paling khusus dahulu. Ini membantu dalam mengenal pasti isu yang tepat dan mengendalikannya dengan sewajarnya.
try { // Code that may throw an exception } catch (FileNotFoundException e) { // Handle FileNotFoundException } catch (IOException e) { // Handle other IOExceptions }
2. Elakkan Blok Tangkapan Kosong
Blok tangkapan kosong boleh menyembunyikan ralat dan menyukarkan penyahpepijatan. Sentiasa log pengecualian atau ambil tindakan.
try { // Code that may throw an exception } catch (IOException e) { e.printStackTrace(); // Log the exception }
3. Gunakan Finally Block untuk Pembersihan
Blok akhirnya digunakan untuk melaksanakan kod penting seperti menutup sumber, tidak kira sama ada pengecualian dilemparkan atau tidak.
BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("file.txt")); // Read file } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
4. Jangan Tangkap Boleh Dibuang
Elakkan menangkap Throwable kerana ia termasuk ralat yang tidak dimaksudkan untuk ditangkap, seperti OutOfMemoryError.
try { // Code that may throw an exception } catch (Exception e) { e.printStackTrace(); // Catch only exceptions }
5. Log Pengecualian Dengan Betul
Gunakan rangka kerja pengelogan seperti Log4j atau SLF4J untuk mengelog pengecualian dan bukannya menggunakan System.out.println.
private static final Logger logger = LoggerFactory.getLogger(MyClass.class); try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); }
6. Baling Semula Pengecualian jika Perlu
Kadangkala, adalah lebih baik untuk membuang semula pengecualian selepas mengelognya atau melakukan beberapa tindakan.
try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); throw e; // Rethrow the exception }
7. Gunakan Blok Berbilang Tangkapan
Dalam Java 7 dan lebih baru, anda boleh menangkap berbilang pengecualian dalam satu blok tangkapan.
try { // Code that may throw an exception } catch (IOException | SQLException e) { e.printStackTrace(); // Handle both IOException and SQLException }
8. Elakkan Terlalu Menggunakan Pengecualian untuk Aliran Kawalan
Pengecualian tidak boleh digunakan untuk aliran kawalan biasa. Ia bertujuan untuk keadaan yang luar biasa.
// Avoid this try { int value = Integer.parseInt("abc"); } catch (NumberFormatException e) { // Handle exception } // Prefer this if (isNumeric("abc")) { int value = Integer.parseInt("abc"); }
Atas ialah kandungan terperinci Amalan terbaik untuk menggunakan blok cuba-tangkap untuk mengendalikan pengecualian.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!