mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-08-26 22:29:24 +00:00
updates on docs
This commit is contained in:
parent
9e3a7c642d
commit
f4e8bbf7a3
@ -104,7 +104,7 @@ public class ExceptionUtils {
|
||||
*/
|
||||
public static IOException createIOException(
|
||||
String messageKey, String defaultMessage, Exception cause, Object... args) {
|
||||
String message = String.format(defaultMessage, args);
|
||||
String message = messageKey != null ? defaultMessage : String.format(defaultMessage, args);
|
||||
return new IOException(message, cause);
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ public class ExceptionUtils {
|
||||
*/
|
||||
public static RuntimeException createRuntimeException(
|
||||
String messageKey, String defaultMessage, Exception cause, Object... args) {
|
||||
String message = String.format(defaultMessage, args);
|
||||
String message = messageKey != null ? defaultMessage : String.format(defaultMessage, args);
|
||||
return new RuntimeException(message, cause);
|
||||
}
|
||||
|
||||
@ -133,7 +133,8 @@ public class ExceptionUtils {
|
||||
*/
|
||||
public static IllegalArgumentException createIllegalArgumentException(
|
||||
String messageKey, String defaultMessage, Object... args) {
|
||||
String message = String.format(defaultMessage, args);
|
||||
// Only format if no translation key provided (for backwards compatibility)
|
||||
String message = messageKey != null ? defaultMessage : String.format(defaultMessage, args);
|
||||
return new TranslatableException(message, messageKey, args);
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,23 @@
|
||||
# Exception Handling Guide
|
||||
|
||||
This guide shows how to use the new centralized exception handling utilities for consistent, internationalized error messages.
|
||||
This guide shows how to use the centralized exception handling utilities for consistent error messages with frontend translation support.
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
The system uses a **backend-frontend translation split**:
|
||||
- **Backend**: Creates structured JSON error responses with translation keys and English fallbacks
|
||||
- **Frontend**: Translates error messages to user's language using JavaScript
|
||||
|
||||
## New Utilities
|
||||
|
||||
### 1. I18nUtils
|
||||
Provides centralized access to Spring MessageSource for internationalized messages.
|
||||
### 1. ExceptionUtils
|
||||
Creates `TranslatableException` instances with structured translation data for frontend.
|
||||
|
||||
### 2. ExceptionUtils
|
||||
Handles exceptions with internationalized error messages and appropriate logging.
|
||||
### 2. GlobalExceptionHandler
|
||||
Converts exceptions to structured JSON responses with translation information.
|
||||
|
||||
### 3. MessageFormatter.js
|
||||
Frontend utility for translating error messages with placeholder replacement.
|
||||
|
||||
## Usage Examples
|
||||
|
||||
@ -58,17 +67,35 @@ throw ExceptionUtils.createFileProcessingException("merge", originalException);
|
||||
throw ExceptionUtils.createIOException("error.customKey", "Default message", originalException, arg1, arg2);
|
||||
```
|
||||
|
||||
### Using I18nUtils Directly
|
||||
### JSON Error Response Format
|
||||
|
||||
```java
|
||||
// Get message with current locale
|
||||
String message = I18nUtils.getMessage("error.pdfCorrupted");
|
||||
The system returns structured JSON error responses with translation support:
|
||||
|
||||
// Get message with arguments
|
||||
String message = I18nUtils.getMessage("error.pdfCorruptedDuring", "during merge");
|
||||
```json
|
||||
{
|
||||
"error": "Bad Request",
|
||||
"message": "DPI value 500 exceeds maximum safe limit of 300. High DPI values can cause memory issues and crashes. Please use a lower DPI value.",
|
||||
"trace": "java.lang.IllegalArgumentException: ...",
|
||||
"translationKey": "error.dpiExceedsLimit",
|
||||
"translationArgs": ["500", "300"]
|
||||
}
|
||||
```
|
||||
|
||||
// Get message with fallback
|
||||
String message = I18nUtils.getMessage("error.customKey", "Default message", arg1, arg2);
|
||||
**Key Features:**
|
||||
- `message`: English fallback for API consumers that ignore translation
|
||||
- `translationKey`: Frontend translation key
|
||||
- `translationArgs`: Arguments for placeholder replacement
|
||||
- API consumers can rely on `message` for backwards compatibility
|
||||
|
||||
### Frontend Translation with MessageFormatter
|
||||
|
||||
```javascript
|
||||
// Translate error messages with placeholder replacement
|
||||
const displayMessage = window.MessageFormatter.translate(
|
||||
json.translationKey,
|
||||
json.translationArgs,
|
||||
json.message // fallback to original message
|
||||
);
|
||||
```
|
||||
|
||||
## Controller Pattern
|
||||
|
Loading…
x
Reference in New Issue
Block a user