Pengendalian pengecualian perkhidmatan mikro dan komponen pengurusan kod ralat dilaksanakan dalam Java
Pengenalan:
Dengan populariti seni bina perkhidmatan mikro, semakin banyak sistem dibahagikan kepada berbilang perkhidmatan kecil, setiap perkhidmatan bertanggungjawab untuk fungsi perniagaan tertentu. Dalam seni bina perkhidmatan mikro, pengendalian pengecualian dan pengurusan kod ralat adalah sangat penting. Artikel ini akan memperkenalkan cara menggunakan Java untuk melaksanakan pengendalian pengecualian perkhidmatan mikro yang ringkas dan berkuasa dan komponen pengurusan kod ralat, dan menyediakan contoh kod.
1. Prinsip pengendalian pengecualian
Pengurusan kod ralat seragam
Untuk memudahkan pengendalian pengecualian dan pengurusan maklumat ralat bersatu, kami boleh mentakrifkan jenis enumerasi ErrorCode, yang mengandungi kod ralat dan maklumat ralat sepadan yang mungkin dihadapi oleh sistem. Setiap kod ralat boleh mempunyai nilai integer yang unik dan perihalan ralat, contohnya:
public enum ErrorCode { SUCCESS(0, "success"), INVALID_PARAMETER(1001, "invalid parameter"), DATABASE_ERROR(2001, "database error"), ... private int code; private String message; ErrorCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public String getMessage() { return message; } }
Pengendalian pengecualian seragam
Dalam perkhidmatan mikro, kami boleh menggunakan pemproses pengecualian global untuk mengendalikan semua pengecualian perniagaan secara seragam dan mengembalikan respons ralat bersatu. Pengendali pengecualian global boleh ditakrifkan melalui anotasi @ControllerAdvice. Contohnya:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(ServiceException.class) @ResponseBody public ResponseEntity<ErrorResponse> handleServiceException(ServiceException ex) { ErrorCode errorCode = ex.getErrorCode(); ErrorResponse errorResponse = new ErrorResponse(errorCode.getCode(), errorCode.getMessage()); return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR); } @ExceptionHandler(Exception.class) @ResponseBody public ResponseEntity<ErrorResponse> handleException(Exception ex) { ErrorResponse errorResponse = new ErrorResponse(ErrorCode.INTERNAL_ERROR.getCode(), ex.getMessage()); return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR); } }
2. Pelaksanaan komponen
Berdasarkan perkara di atas, kami boleh melaksanakan komponen untuk pengendalian pengecualian perkhidmatan mikro dan pengurusan kod ralat. Komponen boleh menyediakan fungsi berikut:
Tentukan kaedah pengendalian pengecualian
Komponen boleh menyediakan kelas ExceptionHandler, yang mengandungi satu siri kaedah statik untuk melontar pengecualian dengan kod ralat yang ditentukan. Contohnya:
public class ExceptionHandler { public static void throwInvalidParameterException() { throw new ServiceException(ErrorCode.INVALID_PARAMETER); } public static void throwDatabaseErrorException() { throw new ServiceException(ErrorCode.DATABASE_ERROR); } ... }
Mendapatkan kod ralat dan maklumat ralat
Komponen boleh menyediakan kelas ErrorCodeManager, yang mengandungi satu siri kaedah statik untuk mendapatkan maklumat ralat berdasarkan kod ralat. Contohnya:
public class ErrorCodeManager { public static String getMessage(int code) { for (ErrorCode errorCode : ErrorCode.values()) { if (errorCode.getCode() == code) { return errorCode.getMessage(); } } return "unknown error"; } }
3. Contoh aplikasi
Katakan kita mempunyai perkhidmatan mikro yang menyediakan fungsi pendaftaran pengguna. Apabila antara muka berdaftar menerima parameter yang tidak sah, kami berharap untuk membuang pengecualian INVALID_PARAMETER dan mengembalikan mesej ralat yang sepadan.
Define Exception Class
public class InvalidParameterException extends ServiceException { public InvalidParameterException() { super(ErrorCode.INVALID_PARAMETER); } }
Use Pengendalian Pengecualian Dalam antara muka berdaftar
@RestController public class UserController { @PostMapping("/register") public ResponseEntity<String> register(@RequestBody UserRegisterRequest request) throws InvalidParameterException { if (StringUtils.isBlank(request.getUsername())) { ExceptionHandler.throwInvalidParameterException(); } // 注册逻辑... return new ResponseEntity<>("success", HttpStatus.OK); } }
global Pengendalian Pengecualian
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(InvalidParameterException.class) @ResponseBody public ResponseEntity<ErrorResponse> handleInvalidParameterException(InvalidParameterException ex) { ErrorResponse errorResponse = new ErrorResponse(ex.getErrorCode().getCode(), ex.getErrorCode().getMessage()); return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST); } }
conclusion:
Shrough Contoh -contoh di atas, kita dapat melihat pengecualian mikroservis yang dilaksanakan dalam java mudah dan pengendalian yang mudah digunakan dan komponen pengurusan kod ralat. Komponen ini boleh membantu pembangun mengendalikan pengecualian secara seragam dalam seni bina perkhidmatan mikro dan menyediakan fungsi pengurusan kod ralat. Ini boleh meningkatkan kebolehselenggaraan dan kebolehskalaan sistem dan menjadikan seni bina perkhidmatan mikro lebih stabil dan teguh.
Nota: Contoh kod di atas hanyalah demonstrasi dan boleh diubah suai dan dikembangkan mengikut keadaan tertentu semasa penggunaan sebenar.
Atas ialah kandungan terperinci Pengendalian pengecualian perkhidmatan mikro dan komponen pengurusan kod ralat dilaksanakan dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!