ข้อผิดพลาดหรือข้อยกเว้นคือสิ่งที่อ้างถึงการหยุดชะงักของการดำเนินการโค้ดเนื่องจากผู้ใช้ปลายทางไม่สามารถบรรลุผลลัพธ์ที่คาดหวังได้ บนพื้นฐานของเหตุการณ์เมื่อมีการสร้างหรือระบุข้อผิดพลาดเราสามารถจัดประเภทเป็นข้อผิดพลาดในการคอมไพล์ และรันไทม์ผิดพลาด
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างข้อผิดพลาดในการคอมไพล์เวลาและข้อผิดพลาดรันไทม์
| ซีเนียร์ เลขที่ | คีย์ | ข้อผิดพลาดในการคอมไพล์เวลา | ข้อผิดพลาดรันไทม์ |
|---|---|---|---|
| 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;