ฉันไม่เห็นความแตกต่างระหว่างข้อกังวลของการจัดการข้อยกเว้นและการเข้าสู่ระบบที่ทั้งคู่เป็นข้อกังวลตัดขวาง คุณคิดอย่างไร? ไม่ควรจัดการแยกต่างหากด้วยตัวเองแทนที่จะสอดแทรกด้วยตรรกะหลักที่วิธีการใช้งานอยู่?
แก้ไข : สิ่งที่ฉันพยายามจะพูดก็คือในความคิดของฉันการใช้วิธีการควรมีตรรกะสำหรับเส้นทางที่ประสบความสำเร็จของการดำเนินการและข้อยกเว้นควรได้รับการจัดการที่อื่น นี่ไม่ใช่ข้อยกเว้นเกี่ยวกับการตรวจสอบ / ไม่ได้ตรวจสอบ
ตัวอย่างเช่นภาษาอาจจัดการกับข้อยกเว้นในวิธีการตรวจสอบอย่างสมบูรณ์โดยใช้โครงสร้างดังนี้:
class FileReader {
public String readFile(String path) {
// implement the reading logic, avoid exception handling
}
}
handler FileReader {
handle String readFile(String path) {
when (IOException joe) {
// somehow access the FileInputStram and close it
}
}
}
ในภาษาแนวคิดข้างต้นโปรแกรมจะไม่รวบรวมในกรณีที่ไม่มีการFileReader
จัดการเพราะFileReader
ระดับ 's readfile ไม่ได้โยนข้อยกเว้น ดังนั้นโดยการประกาศFileReader
ตัวจัดการคอมไพเลอร์สามารถมั่นใจได้ว่ามันจะถูกจัดการและจากนั้นโปรแกรมรวบรวม
วิธีนี้เรามีปัญหาข้อยกเว้นทั้งที่ตรวจสอบและไม่ได้ตรวจสอบอย่างดีที่สุด: ความทนทานและความสามารถในการอ่าน