Apabila membangunkan aplikasi Spring Boot, anda pasti akan menghadapi pelbagai pengecualian dan ralat, seperti pengecualian sambungan pangkalan data, ralat logik kod, pengecualian kebenaran pengguna, pemutusan sambungan rangkaian, dsb. Pengecualian dan ralat ini mempunyai kesan yang besar terhadap kestabilan dan kebolehpercayaan aplikasi, jadi kami perlu mengendalikan pengecualian ini tepat pada masanya untuk memastikan aplikasi boleh terus berjalan.
Artikel ini akan memperkenalkan cara mengendalikan pengecualian dan ralat dalam aplikasi Spring Boot, termasuk tangkapan pengecualian, penyahpepijatan dan resolusi ralat, pengelogan pengecualian, dsb. Berikut ialah kandungan khusus:
Tambahkan penyataan cuba-tangkap pada kod untuk menangkap Program Pengecualian semasa operasi. Apabila pengecualian berlaku dalam program, ia akan memasuki blok pernyataan tangkapan Anda boleh menambah logik dalam blok ini untuk mengendalikan pengecualian, seperti mencetak maklumat pengecualian ke log atau mengembalikannya kepada pengguna bahagian hadapan.
Kod sampel:
try { // 可能发生异常的代码块 } catch (Exception e) { // 异常处理逻辑 }
@ControllerAdvice ialah anotasi yang disediakan oleh rangka kerja Spring untuk mengendalikan pengecualian dalam Spring MVC secara global. Melalui anotasi ini, kami boleh mentakrifkan logik pengendalian pengecualian global dan mengendalikan semua pengecualian secara seragam.
Kod sampel:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) public ResponseEntity<Object> handleException(Exception e) { // 异常处理逻辑 return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } }
Dalam kod di atas, kaedah handleException boleh mengendalikan semua pengecualian Pengecualian dan mengembalikan objek ResponseEntity dengan maklumat ralat dan kod status HTTP. Dalam aplikasi, apabila sebarang pengecualian Pengecualian berlaku, kaedah ini akan dipanggil untuk pengendalian pengecualian.
Apabila mengendalikan pengecualian, kami juga boleh menyesuaikan kelas pengecualian untuk mewakili jenis pengecualian tertentu. Dengan menyesuaikan kelas pengecualian, kami boleh membuang objek pengecualian dalam program untuk menjadikan program lebih jelas dan lebih mudah difahami Pada masa yang sama, kami juga boleh melakukan pengendalian pengecualian yang disasarkan dalam pengendali pengecualian global.
Kod contoh:
// 自定义异常类 public class MyException extends Exception { public MyException(String message) { super(message); } } // 抛出自定义异常 if (someCondition) { throw new MyException("发生了 MyException 异常"); } // 异常处理逻辑 @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = MyException.class) public ResponseEntity<Object> handleMyException(MyException e) { // 自定义异常处理逻辑 return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } }
Dalam kod di atas, kami mentakrifkan kelas pengecualian MyException, yang akan dilemparkan apabila program memenuhi syarat tertentu. Dalam pengendali pengecualian global, kami menggunakan anotasi @ExceptionHandler(value = MyException.class) untuk menunjukkan bahawa kaedah itu boleh mengendalikan pengecualian jenis MyException.
Penyahpepijatan ialah kunci untuk menyelesaikan ralat aplikasi. Dengan menyahpepijat atur cara, kita boleh melihat maklumat seperti status program, nilai pembolehubah dan laluan pelaksanaan untuk mencari punca ralat. Dalam aplikasi Spring Boot, kita boleh nyahpepijat dengan menetapkan tahap log kepada DEBUG.
Tambahkan kod berikut dalam fail application.properties:
logging.level.root=DEBUG
Dalam kod di atas, tetapkan akar tahap log kepada DEBUG Apabila menjalankan program, log program akan mengeluarkan lebih banyak maklumat penyahpepijatan .
Log ralat log ialah cara yang berkesan untuk mencari ralat. Aplikasi Spring Boot dilengkapi dengan rangka kerja pengelogan - log balik, yang melaluinya kita boleh merekod log ralat. Dalam fail logback.xml, kami boleh mengkonfigurasi format output log, laluan penyimpanan fail log, dsb.
Kod sampel:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/springbootdemo.log</file> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>logs/springbootdemo.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> </appender> <logger name="com.yourpackage" level="INFO"/> <root level="INFO"> <appender-ref ref="fileAppender"/> </root> </configuration>
Dalam kod di atas, kami menambah penambah bernama fileAppender untuk mengeluarkan log ke fail yang ditentukan. Antaranya, rollingPolicy digunakan untuk mengkonfigurasi dasar rolling fail, maxFileSize menetapkan saiz fail log tunggal, maxHistory menetapkan bilangan hari untuk penyimpanan fail log, dan totalSizeCap menetapkan jumlah saiz fail log.
Dalam aplikasi Spring Boot, pengecualian dan pengendalian ralat adalah sangat penting. Melalui penangkapan dan pengendalian pengecualian yang betul, kemahiran penyahpepijatan dan pengelogan, kami boleh memastikan kestabilan dan kebolehpercayaan program, sekali gus menyediakan perkhidmatan yang lebih baik kepada pengguna.
Di atas ialah beberapa petua dan kaedah asas tentang cara mengendalikan pengecualian dan ralat dalam aplikasi Spring Boot saya harap ia akan membantu semua orang.
Atas ialah kandungan terperinci Cara mengendalikan pengecualian dan ralat dalam aplikasi Spring Boot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!