Các trình xử lý lỗi tốt nhất thường là chặn các lỗi nếu có thể, rồi thông báo lỗi tương ứng và tự khắc phục lỗi khi chúng xảy ra mà không chấm dứt hoạt động của ứng dụng, hoặc nếu vẫn thất bại (không xử lý được) thì thường xử lý để ngưng hoạt động một phần chức năng lỗi và lưu các thông tin lỗi vào tập tin nhật ký hoạt động (log file).
Thường có hai loại lỗi. Lỗi lập trình và lỗi trong lúc ứng dụng đang chạy (run-time error).
- Lỗi lập trình
Trong lúc lập trình, lỗi do lập trình viên thì hoàn toàn có thể ngăn ngừa được. Ví dụ như lỗi cú pháp (Syntax errors) hoặc lỗi logic (Logic errors) như gõ ">=5" thay vì ">5".
Syntax errors: thường là do gõ sai hoặc do việc sử dụng sai các ký tự đặc biệt (thường trong các toán tử so sánh). Các lỗi này có thể phát hiện được trong quá trình rà soát lỗi (review code).
Logic errors: xảy ra khi source code được thực thi mà thực hiện không đúng theo chức năng mong muốn hay kết quả mong đợi. Ví dụ do tính toán sai. Sử dụng sai biến hoặc các toán tử so sánh bị sai.
Run-time Error
Các lỗi này xảy ra khi chương trình đang hoạt động, và thường xảy ra do dữ liệu truyền vào không hợp lệ hoặc do các biến môi trường không tồn tại. Ví dụ, thiếu bộ nhớ hoặc một biến nào đó bị một ứng dụng khác sử dụng (đụng độ với ứng dụng khác), lỗi này thường được gọi là tranh chấp tài nguyên giữa các ứng dụng đang cùng chạy trong hệ thống. Với các ứng dụng web, thì thường xảy ra các lỗi do virus hay các phần mềm độc hại có trên máy chủ của trang web.
Run-time errors có thể được xử lý hoặc giảm thiểu ảnh hưởng của nó đến hệ thống đang hoạt động bằng cách sử dụng các trình xử lý lỗi, quản trị hệ thống đề phòng cảnh giác bằng cách khoá hoặc hạn chế truy cập từ một số khu vực nào đó đến trang web hoặc áp dụng các phương pháp đối phó với các vấn đề an ninh mạng khác.