Menggunakan pengecualian generik seperti Ralat, RuntimeException, Boleh Lempar dan Pengecualian menghalang kaedah panggilan daripada mengendalikan pengecualian benar yang dijana sistem secara berbeza daripada ralat yang dijana aplikasi.
public void foo(String bar) throws Throwable { // Noncompliant throw new RuntimeException("My Message"); // Noncompliant }
public void foo(String bar) { throw new MyOwnRuntimeException("My Message"); }
Ini mudah difahami.
Tangkap pengecualianMari kita gunakan analogi mudah Sekarang untuk membuat log masuk, kod harus ditulis seperti ini.
用户不存在/密码错误...
这些错误类型, 如果你直接使用RuntimeException
Sebaliknya, pengecualian tersuai dilaksanakan seperti berikut: Tangkap pengecualian Terdapat banyak kelemahan dalam menilai logik pengendalian pengecualian melalui
Sudah tentu, kita juga boleh tentukan jenis pengecualian umum, Ia akan menjadi lebih tepat untuk menilai mengikut kod perniagaan, dan ia juga akan mengurangkan definisi jenis pengecualian dan mengurangkan lebihan kod Di bawah ialah sekeping kod
kotlin
, iaitu cara saya menggunakannya sekarang.message
判断处理异常逻辑有很多弊端, 比如message
是动态的, 那将无法准确的处理.当然我们也可以定义一个通用的异常类型, 通过业务码去判断会更加准确, 同时也会减少异常类型的定义, 减少代码的冗余. 下面有一段
kotlin
Penjelasan yang cukup jelas, memudahkan untuk ditangkap dan diproses
Nama pengecualian mesti bermakna, nama RuntimeException tidak bermakna
Jika anda membuang Exception secara terus, Nginx akan menulis ganti mesej yang ditentukan anda dan anda tidak akan dapat melihat maklumat khusus.
Pendekatan yang disyorkan adalah untuk menentukan pengecualian sendiri dan mewarisi RuntimeException Ini akan membantu anda mengetahui apakah pengecualian anda dan memudahkan anda mencari masalah.
Pengecualian runtime tidak perlu ditangkap