Rumah  >  Artikel  >  Java  >  Pengendalian pengecualian perkhidmatan mikro dan komponen pengurusan kod ralat dilaksanakan dalam Java

Pengendalian pengecualian perkhidmatan mikro dan komponen pengurusan kod ralat dilaksanakan dalam Java

王林
王林asal
2023-08-09 11:03:231062semak imbas

Pengendalian pengecualian perkhidmatan mikro dan komponen pengurusan kod ralat dilaksanakan dalam Java

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

  1. Tentukan jenis pengecualian bersatu
    Dalam seni bina perkhidmatan mikro, kami berharap dapat menyatukan format dan jenis pengecualian untuk memudahkan pemprosesan dan tindak balas pengecualian sistem. Oleh itu, kita boleh menentukan jenis pengecualian bersatu, seperti ServiceException, yang mewarisi daripada RuntimeException. Semua pengecualian perniagaan boleh membuang ServiceException dan membawa kod ralat dan mesej ralat bersatu.
  2. 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;
     }
    }
  3. 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:

  1. 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);
     }
    
     ...
    }
  2. 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.

  1. Define Exception Class

    public class InvalidParameterException extends ServiceException {
    
     public InvalidParameterException() {
         super(ErrorCode.INVALID_PARAMETER);
     }
    }
    e
  2. 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);
     }
    }
    e
  3. 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);
     }
    }
    e

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!

Kenyataan:
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