commit 5343717100ebde011bd0df447353d94f107db049 Author: Vincent Guillet Date: Mon Apr 28 17:35:09 2025 +0200 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..50875d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,121 @@ +# ---> Custom +# macOS system files +.DS_Store +.AppleDouble +.LSOverride + +# Windows system files +Thumbs.db + +# Unix/Linux system files +*.swp +*.swo +*~ + +# Logs and temporary files +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Dependency directories +node_modules/ +.bower_components/ + +# Build directories +dist/ +build/ +coverage/ +out/ + +# Environment and secrets +.env +.env.local +.env.*.local + +# Generated files +*.lock +*.tmp +*.cache +*.pid + +# Compiled files +*.class +*.o +*.so +*.exe + +# Crash reports +*.stackdump +*.dmp +*.mdmp + +# External version control systems +.svn/ +.hg/ +.git/ +.cvsignore + +# Backup and leftover files +*.bak +*.old +*.orig + +# Extended macOS system files +.Spotlight-V100 +.Trashes +._* + +# Node.js +npm-debug.log +yarn-error.log +.pnpm-debug.log + +# JetBrains IDEs (IntelliJ IDEA, PhpStorm, WebStorm, etc.) +.idea/ +*.iml +*.ipr +*.iws + +# Editor temporary files +.vscode/ +*.code-workspace +*.sublime-workspace + +# Archives +*.zip +*.tar.gz +*.rar + +# Framework-specific files (Symfony, React, Angular, etc.) +var/ +vendor/ +public/uploads/ +storage/ + +# Testing and linting tools +eslintcache/ +.jest/ +.jest-cache/ +.jest-output/ + +# Docker +docker-compose.override.yml +.env.docker.local + +# Miscellaneous +*.log.* +*.log~ + +# Python +#All python cache files and folders +*.py[cod] +*.pyo +*.pyd +*.pdb +*.egg-info/ +*.egg +*.whl +$__pycache__/ +*.pyc + diff --git a/README.md b/README.md new file mode 100644 index 0000000..27a7a33 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# EXO-JAVA-Gestion des exceptions + +## Contexte + +Dans cet exercice, vous améliorerez le système de bibliothèque existant en ajoutant une gestion robuste des exceptions. L'objectif est de rendre l'application plus fiable et maintenable grâce à une meilleure gestion des erreurs. + +## Objectifs + +1. Créer une hiérarchie d'exceptions personnalisées +2. Améliorer la gestion des erreurs dans la classe Bibliothèque +3. Implémenter une validation robuste des données +4. Tester la gestion des exceptions + +## Tâches + +### 1. Création des exceptions personnalisées + +- Créer une classe `BibliothequeException` qui étend `Exception` +- Implémenter les sous-classes suivantes : +- `LivreNonDisponibleException` : lancée quand un livre n'est pas disponible +- `LivreDejaEmprunteException` : lancée quand un livre est déjà emprunté +- `DonneesInvalidesException` : lancée quand les données sont invalides + +### 2. Amélioration de la classe Bibliothèque + +- Modifier les méthodes existantes pour utiliser les nouvelles exceptions +- Ajouter des blocs try-catch appropriés +- Implémenter une validation des données d'entrée + +### 3. Gestion des erreurs de saisie + +- Créer une classe `ValidationUtil` avec des méthodes statiques pour : +- Valider les titres de livres (non null, non vide) +- Valider les noms d'auteurs (non null, non vide) +- Valider les dates d'emprunt (format correct) + +## Critères de validation + +- Le code compile sans erreur +- Les exceptions sont correctement gérées + +## Livrables + +1. Les classes d'exceptions +2. La classe Bibliothèque modifiée +3. La classe ValidationUtil +4. La documentation JavaDoc + +## Bonus + +- Ajouter un système de logging pour tracer les exceptions \ No newline at end of file