Syntax-error: Hay tiếng Việt gọi là lỗi cú pháp, loại này được phát hiện ngay ở bước biên dịch chương trình. Trình biên dịch thông báo chi tiết ra lỗi gì và ở đâu. ( Nhưng đừng tin hoàn toàn vào nó, trình biên dịch cũng không lường hết được ty tỷ các case sai mà detect và chỉ ra chính xác cần sửa ở đâu được đâu. Suy cho cùng nó cũng là do con người viết ra thôi mà 😅 )
Ví dụ: như lỗi thiếu dấu ; khi kết thúc một câu lệnh
#include <stdio.h>
void main()
{
printf("Xin chao 500 anh em")
}
Ví dụ: hoặc một lỗi cú pháp toán tử so sánh == như sau
if(a ===== b) c = 10;
Runtime-error: Lỗi này qua được ải Syntax-error, chương trình đã được biên dịch thành công, bị xảy ra bởi chương trình do đầu vào hoặc đầu ra có giá trị không mong muốn.
Ví dụ: như lỗi chia cho 0 dưới đây
#include <stdio.h>
void main()
{
int a, b = 5, c = 0;
a = b/c;
}
Ví dụ: Hoặc lỗi bị vòng lặp vô hạn, do điều kiện kết thúc vòng lặp luôn đúng, hoặc break bị đặt thiếu
while(stupidCondition)
{
//vòng lặp vô tận
}
Ví dụ: Hoặc lỗi can thiệp vào vùng nhớ không hợp lệ
int[] array = new int[10];
array [12] = 7; //lỗi truy cập vùng nhớ chưa cấp phát
Tất cả nếu không được xử lý sẽ dẫn tới chương trình bị crash ( hệ điều hành đình chỉ Process do vi phạm nguyên tắc hoạt động )
Logical-error: Loại này mới là loại chúng ta đau đầu nhất, và tốn xử lý của bộ não nhất. Chính là xử lý logic bị sai, dẫn đến chương trình chạy sai và ra thứ ba lăng nhăng gì đó, chứ không phải thứ chúng ta cần .
TuanTiTien++