ข้อผิดพลาดหรือข้อยกเว้นคือสิ่งที่อ้างถึงการหยุดชะงักของการดำเนินการโค้ดเนื่องจากผู้ใช้ปลายทางไม่สามารถบรรลุผลลัพธ์ที่คาดหวังได้ บนพื้นฐานของเหตุการณ์เมื่อมีการสร้างหรือระบุข้อผิดพลาดเราสามารถจัดประเภทเป็นข้อผิดพลาดในการคอมไพล์ และรันไทม์ผิดพลาด
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างข้อผิดพลาดในการคอมไพล์เวลาและข้อผิดพลาดรันไทม์
ซีเนียร์ เลขที่ | คีย์ | ข้อผิดพลาดในการคอมไพล์เวลา | ข้อผิดพลาดรันไทม์ |
---|---|---|---|
1 | อ้างอิง | ข้อผิดพลาดเวลาคอมไพล์โดยทั่วไปจะอ้างถึงข้อผิดพลาดที่สอดคล้องกับไวยากรณ์หรือความหมาย | ข้อผิดพลาดรันไทม์ในอีกทางหนึ่งหมายถึงข้อผิดพลาดที่พบในระหว่างรันโค้ดขณะรันไทม์ |
2 | การตรวจจับ | คอมไพเลอร์ตรวจพบข้อผิดพลาดในเวลาคอมไพล์ในขณะที่พัฒนาโค้ด | คอมไพเลอร์จะตรวจไม่พบข้อผิดพลาดรันไทม์และดังนั้นจึงระบุได้ในขณะที่เรียกใช้โค้ด |
3 | การตรึง | ข้อผิดพลาดในการคอมไพล์เวลาตามที่กล่าวไปแล้วสามารถแก้ไขได้ในขณะที่พัฒนาโค้ด | ข้อผิดพลาดรันไทม์กำลังเข้าสู่สถานะแก้ไขหลังจากรันโค้ดและระบุข้อผิดพลาดแล้ว |
ตัวอย่างข้อผิดพลาดเวลาคอมไพล์เทียบกับข้อผิดพลาดรันไทม์
CompileDemo.c
#include<stdio.h> public class CompileDemo{ void main(){ int x = 100; int y = 155; // semicolon missed printf("%d", (x, y)) } }
ผลลัพธ์
error: expected ';' before '}' token
ตัวอย่าง
RuntimeDemo.c
include<stdio.h> public class RuntimeDemo{ void main(){ int n = 9; div = 0; div = n/0; printf("resut = %d", div); } }
ผลลัพธ์
warning: division by zero [-Wdiv-by-zero] div = n/0;