ترجمة الاستثناءات
في هذا الدرس 4 موضوعات
هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.
نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.
في هذا الدرس
understand why you get DataAccessException instead of SQLException.
الموضوعات المخطط لها
SQLExceptionis checked and database-specific (error codes, SQL states).- Spring catches it and rethrows an unchecked
DataAccessExceptionsubclass, for exampleDuplicateKeyException,DataIntegrityViolationException,EmptyResultDataAccessException. - This keeps services independent of the database and of JDBC.
- Catch a specific subclass at one place that can act (for example turn a duplicate into 409); do not catch
DataAccessExceptioneverywhere. - Unhandled ones go to the global exception handler.
تفاصيل المخطط المبدئي
عرض عملي
try {
jdbc.sql("insert into product(sku, name) values (:sku, :name)")
.param("sku", sku).param("name", name).update();
} catch (DuplicateKeyException e) {
throw new SkuAlreadyExistsException(sku);
}اختبر فهمك
Is DataAccessException checked or unchecked?
أظهر الإجابة
Unchecked.
التطبيق
طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.
تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.