معالجة الاستثناءات التي تم فحصها في Java 8 Lambdas و STREAMS
عند استخدام Java 8 Lambdas و STREAMS ، هناك رغبة في إلقاء استثناءات محددة دون أن تلجأ إلى استثناءات وقت التشغيل أو عرقلة. ومع ذلك ، على عكس التوقعات:
القيود مع الاستثناءات المحددة:
لسوء الحظ ، فإن واجهات Java 8 الحالية ، بما في ذلك Stream.map () ، لا تدعم الاستثناءات المحددة في التوجيه. ينبع هذا النقص من عدم وجود إعلان معلمة النوع داخل الواجهات الوظيفية التي تحدد معالجة الاستثناءات المحددة.
حل محتمل (فرصة ضائعة):
مثل هذه الآلية من شأنها أن تسهل تمرير الاستثناءات غير الملحومة على طول خط أنابيب الدفق:وظيفة الواجهة
interface Functionمع هذا النهج ، يمكن للمترجم أن يستنتج بدقة أنواع الاستثناءات التي ستتعامل معها عمليات الدفق ، مما يسمح بمعالجة استثناء شفافة.{ // Explicit declaration of potential exceptions. R apply(T t) throws E; } interface Stream { // Pass-through type parameters for exceptions. Stream map(Function mapper) throws E; }
الخلاصة: على الرغم من وجود حلول متوفرة ، إلا أنها تتطلب تحويلات استثناء وقت التشغيل أو تتطلب كتل تجرب/تجرب مرهقة داخل الدفق. يسلط عدم وجود حل شامل الضوء على قيود تصميم الواجهة الوظيفية الحالية في التعامل مع الاستثناءات التي تم فحصها.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3