5
ประโยชน์ของการมี "ไม่มีข้อยกเว้นรันไทม์" เช่น Elm เรียกร้องคืออะไร?
บางภาษาอ้างว่ามี "ไม่มีข้อยกเว้นสำหรับรันไทม์" เพื่อเป็นข้อได้เปรียบที่ชัดเจนกว่าภาษาอื่น ๆ ที่มี ฉันสับสนในเรื่องนี้ ข้อยกเว้นรันไทม์เป็นเพียงเครื่องมือเท่าที่ฉันรู้และเมื่อใช้กัน: คุณสามารถสื่อสารสถานะ "สกปรก" (ขว้างที่ข้อมูลที่ไม่คาดคิด) การเพิ่มสแต็กคุณสามารถชี้ไปที่ห่วงโซ่ของข้อผิดพลาด คุณสามารถแยกแยะระหว่างความยุ่งเหยิง (เช่นคืนค่าว่างในการป้อนข้อมูลที่ไม่ถูกต้อง) และการใช้งานที่ไม่ปลอดภัยที่ต้องการความสนใจจากนักพัฒนา (เช่นการโยนข้อยกเว้นในการป้อนข้อมูลที่ไม่ถูกต้อง) คุณสามารถเพิ่มรายละเอียดลงในข้อผิดพลาดของคุณด้วยข้อความข้อยกเว้นที่ให้รายละเอียดที่เป็นประโยชน์เพิ่มเติมช่วยแก้จุดบกพร่อง (ในทางทฤษฎี) ในทางกลับกันฉันพบว่ายากที่จะดีบักซอฟต์แวร์ที่ "กลืน" ข้อยกเว้น เช่น try { myFailingCode(); } catch { // no logs, no crashes, just a dirty state } ดังนั้นคำถามก็คืออะไรคือความได้เปรียบเชิงทฤษฎีที่แข็งแกร่งของการมี "ไม่มีข้อยกเว้นรันไทม์"? ตัวอย่าง https://guide.elm-lang.org/ ไม่มีข้อผิดพลาดรันไทม์ในทางปฏิบัติ ไม่มีค่าว่าง ไม่มีการกำหนดไม่ได้เป็นฟังก์ชั่น