Dear all, mau sharig terkait dengan standarisasi exception handling pada java , bisa kita standarkan sebagai berikut ,
Standardisasi Exception Handling
terdapat beberapa standar yang di gunakan oleh aplikasi java yaitu sebagai berikut \ untuk error code yang di gunakan adalah sebagai berikut :
- 400 : Bad Request
- 401 : Unauthorized
- 403 : Forbidden
- 404 : Not Found
- 500 : Internal Server Error
- 551 : JDBC Connection Exception
- 552 : Redis Connection Failure Exception
- 553 : Process Engine Exception
- 554 : Api Exception
Implementasi Exception Handling
Untuk mengimplementasikan error handling pada aplikasi java kita dapat menggunakan anotasi @ExceptionHandler yang di sediakan oleh spring framework.
@ExceptionHandler({AlurKerjaException.class})public ResponseEntity<Object> alurKerjaException(HttpServletRequest request, AlurKerjaException ex){
String lang = request.getAttribute("lang") != null ? request.getAttribute("lang").toString() : ID;
ResourceBundle message = ResourceBundle.getBundle(MESSAGES, lang.equals(ID) ? Locale.ROOT : Locale.ENGLISH); String text = message.getString(ex.getMessage()); if (ex.getValues() != null){ int i = 0; for (String value : ex.getValues()) { text = text.replace("{" + i + "}", value); i++; } } if (ex.getCode() == 400) return badRequest(null, text); else if (ex.getCode() == 404) return notFound(null, text); else if (ex.getCode() == 403) return forbidden(null, text); else if (ex.getCode() == 401) return error(HttpStatus.UNAUTHORIZED, text); return error(HttpStatus.INTERNAL_SERVER_ERROR, text);}
@ExceptionHandler({JDBCConnectionException.class})public ResponseEntity<Object> jDBCConnectionException(HttpServletRequest request, JDBCConnectionException ex){ return ResponseEntity.status(551).body(new CommonRs(551, ex.getMessage(), ex));}
@ExceptionHandler({SQLException.class})public ResponseEntity<Object> sQLException(HttpServletRequest request, SQLException ex){ return ResponseEntity.status(551).body(new CommonRs(551, ex.getMessage(), ex));}
@ExceptionHandler({RedisConnectionFailureException.class})public ResponseEntity<Object> redisConnectionFailureException(HttpServletRequest request, RedisConnectionFailureException ex){ return ResponseEntity.status(552).body(new CommonRs(552, ex.getMessage(), ex));}
@ExceptionHandler({JedisException.class})public ResponseEntity<Object> jedisException(HttpServletRequest request, JedisException ex){ return ResponseEntity.status(552).body(new CommonRs(552, ex.getMessage(), ex));}
@ExceptionHandler({ProcessEngineException.class})public ResponseEntity<Object> processEngineException(HttpServletRequest request, ProcessEngineException ex){ return ResponseEntity.status(553).body(new CommonRs(553, ex.getMessage(), ex));}
@ExceptionHandler({ApiException.class})public ResponseEntity<Object> apiException(HttpServletRequest request, ApiException ex){ return ResponseEntity.status(554).body(new CommonRs(554, ex.getMessage(), ex));}