انتقل إلى المحتوى
أمين أبوزيد
درس مخطط لهJNR-026-L04

ترجمة الاستثناءات

  • الدرس 4 من 5
  • Junior
في هذا الدرس 4 موضوعات

هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

understand why you get DataAccessException instead of SQLException.

الموضوعات المخطط لها

  • SQLException is checked and database-specific (error codes, SQL states).
  • Spring catches it and rethrows an unchecked DataAccessException subclass, for example DuplicateKeyException, 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 DataAccessException everywhere.
  • Unhandled ones go to the global exception handler.
تفاصيل المخطط المبدئي

عرض عملي

java
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.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.