"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > البند تجنب الاستخدام غير الضروري للاستثناءات المحددة

البند تجنب الاستخدام غير الضروري للاستثناءات المحددة

تم النشر بتاريخ 2024-11-17
تصفح:366

Item  Evite o uso desnecessário das exceções verificadas

تعتبر الاستثناءات المحددة أداة قوية في Java، لأنها تجبر المبرمج على التعامل مع الظروف الاستثنائية، مما يزيد من موثوقية التعليمات البرمجية. ومع ذلك، فإن الاستخدام المفرط يمكن أن يجعل استخدام واجهات برمجة التطبيقات (API) صعبًا. لكي يتم تبرير الاستثناء المحدد، يجب أن يكون الموقف استثنائيًا حقًا وقادرًا على اتخاذ إجراء مفيد من قبل المبرمج. بخلاف ذلك، قد يكون الاستثناء غير المحدد أكثر ملاءمة.

جلبت Java 8 تحديًا إضافيًا لاستخدام الاستثناءات المحددة، نظرًا لأن الأساليب التي ترميها لا يمكن استخدامها مباشرة في التدفقات، مما يتطلب معالجة إضافية في التعليمات البرمجية. لتجنب هذا التعقيد، يمكن النظر في البدائل، مثل إرجاع كائن اختياري بدلاً من طرح استثناء يمكن التحقق منه، أو تقسيم الطريقة إلى قسمين، أحدهما يتحقق من احتمال وجود خطأ والآخر ينفذ العملية.

يجب استخدام الاستثناءات المحددة باعتدال: إذا لم يكن الاسترداد ممكنًا، استخدم الاستثناءات غير المحددة. عندما يكون الاسترداد ممكنًا، فكر في خيار الإرجاع الاختياري. إذا لم يوفر هذا معلومات كافية، فقد يكون هناك ما يبرر الاستثناء المحدد.

زائد:
فيما يلي بعض الأمثلة لتوضيح الاستخدام الصحيح للاستثناءات والبدائل المحددة مثل الاختياري واستخدام طرق التحقق.

استخدام الاستثناءات المحددة باعتدال
لنفترض أن لدينا طريقة لتحميل البيانات من ملف. إذا لم يتم العثور على الملف، نريد طرح استثناء لإعلام المتصل بالمشكلة. في هذه الحالة، يكون الاستثناء المحدد مناسبًا لأنه يمكن للمطور اتخاذ إجراء لحل المشكلة (مثل توفير مسار الأرشيف الصحيح).

public class FileLoader {
    public String loadFile(String filePath) throws FileNotFoundException {
        File file = new File(filePath);
        if (!file.exists()) {
            throw new FileNotFoundException("Arquivo não encontrado: "   filePath);
        }
        // Código para carregar o arquivo
        return "Conteúdo do arquivo";
    }
}

هنا، يحتاج المتصل إلى معالجة استثناء FileNotFoundException، حيث يمكنه حل المشكلة عن طريق توفير المسار الصحيح للملف.

استخدام الاختياري بدلاً من الاستثناءات المحددة
إذا كان الملف المفقود عبارة عن حالة لا ينبغي أن تقاطع التنفيذ العادي، فيمكننا استخدام الاختياري للإشارة إلى أن النتيجة يمكن أن تكون مفقودة دون طرح استثناء. وهذا يجعل واجهة برمجة التطبيقات (API) أكثر مرونة في الحالات التي يمكن فيها التسامح مع غياب القيمة.

import java.util.Optional;

public class FileLoader {
    public Optional loadFile(String filePath) {
        File file = new File(filePath);
        if (!file.exists()) {
            return Optional.empty();
        }
        // Código para carregar o arquivo
        return Optional.of("Conteúdo do arquivo");
    }
}

في رمز المتصل:

FileLoader loader = new FileLoader();
Optional content = loader.loadFile("caminho/para/arquivo.txt");
content.ifPresentOrElse(
    System.out::println,
    () -> System.out.println("Arquivo não encontrado.")
);

في هذا المثال، لا يحتاج المتصل إلى التعامل مع الاستثناءات، ويتيح له الخيار الاختياري التعامل بسلاسة أكبر مع المحتوى المفقود.

تقسيم الطريقة إلى قسمين: التحقق والتنفيذ
في بعض الحالات، يمكننا تقسيم الطريقة إلى قسمين: طريقة للتحقق من الحالة وأخرى لتنفيذ الإجراء. يسمح هذا للمتصل بالتعامل مع الحالة الاستثنائية قبل استدعاء الطريقة الرئيسية، مما يجعل واجهة برمجة التطبيقات (API) أكثر مرونة.

public class FileLoader {
    // Verifica se o arquivo está disponível
    public boolean isFileAvailable(String filePath) {
        File file = new File(filePath);
        return file.exists();
    }

    // Carrega o conteúdo do arquivo
    public String loadFile(String filePath) {
        if (!isFileAvailable(filePath)) {
            throw new IllegalStateException("Arquivo não encontrado: "   filePath);
        }
        // Código para carregar o arquivo
        return "Conteúdo do arquivo";
    }
}

في رمز المتصل:

FileLoader loader = new FileLoader();
String filePath = "caminho/para/arquivo.txt";

if (loader.isFileAvailable(filePath)) {
    String content = loader.loadFile(filePath);
    System.out.println(content);
} else {
    System.out.println("Arquivo não encontrado.");
}

هنا نستخدم IllegalStateException، وهو استثناء لم يتم التحقق منه، في حالة محاولة المتصل تحميل الملف دون التحقق أولاً من توفره.

ملخص
الاستثناء المحدد: يستخدم للشروط التي يمكن للمتصل إصلاحها مباشرة، مثل FileNotFoundException للملفات.
اختياري: يُستخدم عندما لا يؤدي غياب القيمة إلى مقاطعة تدفق البرنامج.

تقسيم الطريقة: طرق فحص وتنفيذ منفصلة عندما يمكن توقع الخطأ وتجنبه، مما يجعل واجهة برمجة التطبيقات (API) أكثر مرونة وسهولة في الاستخدام.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/giselecoder/item-71-evite-o-uso-desnecessario-das-excecoes-verificadas-4ap7?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3