WebApplication ของเราคือการใช้เพื่อแมข้อยกเว้นบางประการ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();
}
}
เป็นไปได้ที่ซ้ำกันของคุณควรรายงานข้อความของข้อยกเว้น?
มีเหตุผลการรายงานข้อความยกเว้นเป็นความคิดที่ดีเสมอ
IMO มันไม่ยุติธรรมเลยที่จะไม่พูดถึงเลยว่านี่เป็นเว็บเซอร์ สิ่งนี้ทำให้กฎของเกมเปลี่ยนไปจริงๆตัวอย่างเช่นการใช้กลไกการจัดการข้อยกเว้นเป็นประจำอาจเสี่ยงต่อความปลอดภัย คุณไม่ต้องการให้ข้อยกเว้นใด ๆ และทั้งหมดถูกส่งกลับไปในการตอบสนองข้อผิดพลาด 500 ซึ่งจะต้องมีการตรวจสอบและกรอง การบันทึกแบบทันทีทันใดนั้นเป็นเรื่องธรรมดามากเมื่อจัดการกับระบบที่มีไคลเอ็นต์ภายนอกเรียกใช้งานโดยตรง การบันทึก stacktraces ในการเรียกใช้บริการที่ถูกเรียกซ้ำ ๆ อาจทำให้ขนาดไฟล์บันทึกไม่สามารถจัดการได้และปัญหาประสิทธิภาพการทำงาน
@Gimby ในกรณีนี้ OP ไม่ได้ส่งรายละเอียดข้อผิดพลาดใด ๆ ในการตอบสนอง (อาจเป็นเนื้อหา นอกจากนี้คุณจะวินิจฉัยปัญหาได้อย่างไร ตัวบันทึกการทำงานแบบหมุนเวียนจะดูแลขนาดหน่วยเก็บข้อมูลและข้อมูลบันทึกอย่างสม่ำเสมอสามารถบีบอัดได้อย่างน่าอาย
—
Marko Topolnik
ex.getMessage()
นั่นผิดแล้ว