Встречается на собеседованиях • сегодня
Как обрабатывать ошибки в Spring
В Spring ошибки можно обрабатывать с помощью `@ExceptionHandler` и `@ControllerAdvice`.
1. **Локальная обработка в контроллере:**
```java
@RestController
public class MyController {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity handleRuntimeException(RuntimeException ex) {
return ResponseEntity.status(500).body("Error: " + ex.getMessage());
}
}
```
2. **Глобальная обработка через `@ControllerAdvice`:**
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity handleResourceNotFound(ResourceNotFoundException ex) {
return ResponseEntity.status(404).body(ex.getMessage());
}
}
```
3. **Кастомные исключения:**
```java
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}
```
Также можно использовать `ResponseStatusException` для быстрой обработки:
```java
@GetMapping("/item/{id}")
public Item getItem(@PathVariable Long id) {
return repository.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Item not found"));
}
```
Лучшие практики:
- Использовать HTTP-статусы правильно (404 для "Not Found", 400 для "Bad Request" и т.д.).
- Логировать ошибки.
- Возвращать структурированный JSON вместо plain text.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы