আমাদের ওয়েব অ্যাপ্লিকেশনটি ExceptionMapper
কিছু ব্যতিক্রম মানচিত্র করতে ব্যবহার করছে Response
। নিম্নলিখিত হিসাবে নতুন ব্যতিক্রম ছোঁড়ার আগে আমরা ব্যতিক্রম বার্তাগুলি লগ করি:
catch (SomeException ex) {
LOG.error(ex.getMessage());
throw new MyException(ex.getMessage());
}
আমরা পুনরায় নিক্ষেপ একই ব্যতিক্রম না তাই আমার প্রশ্ন যদি এটা একটা বিবেচিত হবে হয়, লগ ইন করুন এবং antipattern নিক্ষেপ । এবং এইভাবে, অনুরূপ জায়গায় লগিং অপসারণ এবং ExceptionMapper
নীচের হিসাবে কয়েকটি শ্রেণিতে স্থানান্তর করা ভাল হবে :
@Provider
public class MyExceptionMapper implements ExceptionMapper<MyException> {
// bla bla
@Override
public Response toResponse(final MyException ex) {
LOG.error(ex.getMessage());
return Response.status(400).entity("something").build();
}
}
সম্ভাব্য সদৃশ এর ব্যতিক্রম বার্তা পাঠ্য রিপোর্ট করা উচিত?
তর্কযোগ্য, ব্যতিক্রম বার্তার পাঠ্যের প্রতিবেদন করা সর্বদা একটি খারাপ ধারণা ।
আইএমও এটি একটি ওয়েব সার্ভিস যে বিষয়টি উল্লেখ না করা মোটেই ন্যায়সঙ্গত নয়। এটি সত্যিই গেমের নিয়মগুলিকে পরিবর্তন করে, কারণ উদাহরণস্বরূপ কেবল নিয়মিত ব্যতিক্রম হ্যান্ডলিং মেকানিক্স ব্যবহার করা কোনও সুরক্ষা ঝুঁকি হতে পারে; আপনি চাইছেন না যে কোনও এবং সমস্ত ব্যতিক্রম কেবল 500 ত্রুটি প্রতিক্রিয়াতে ফিরে পাঠানো উচিত, এটি পরীক্ষা করে ফিল্টার করা দরকার। বাহ্যিক ক্লায়েন্টরা সরাসরি ডেকে আনছে এমন সিস্টেমগুলির সাথে লেনদেন করার সময় আক্রমণাত্মক অন-দ্য স্পট লগিং আরও বেশি সাধারণ। পরিষেবা কলগুলিতে স্ট্যাকট্রেসগুলি লগইন করা যা বারবার আহ্বান করা হয় তা নিয়ন্ত্রণহীন লগ ফাইলের আকার এবং কার্য সম্পাদনের সমস্যা হতে পারে।
@ গিম্বি এই ক্ষেত্রে ওপি প্রতিক্রিয়াতে কোনও ত্রুটির বিবরণ প্রেরণ করে না (সম্ভবত একটি বয়লারপ্লেট "ত্রুটি ঘটেছে" সামগ্রী)। এছাড়াও, আপনি কীভাবে কোনও স্ট্যাকট্রেস ছাড়াই কোনও সমস্যা নির্ণয় করবেন? ঘূর্ণায়মান ল্যাগাররা নিয়মিত স্টোরেজ আকারের যত্ন নেয় এবং লগ ডেটা এম্ব্রেসিয়েবলভাবে সংকোচনযোগ্য।
—
মার্কো টপলনিক
ex.getMessage()
, এটি ইতিমধ্যে ভুল।