Lamvt – Vũ Thành Lâm – bắt đầu Code 2005 Freelancer từ 2006 với hàng ngàn dự án lớn nhỏ cho nước ngoài và hàng trăm dự án web cho Việt Nam.
SEO thành công rất nhiều dự án lớn, độ khó cao.
MOD (Moderator) và Admin (Administraror) của nhiều diễn đàn về SEO và CODE web MMO tại Việt Nam
Dạy Lập trình Thiết kế Web và SEO Miễn phí 17++ Năm (Từ 2006 đến Nay)
Việc giải quyết tất cả lỗi và lỗi tiềm ẩn trong mã của bạn có vẻ như là một việc dễ dàng, nhưng trên thực tế không phải vậy. Thật khó để dự đoán mã của bạn sẽ hoạt động như thế nào, do đó bạn không thể viết mã để xử lý tất cả các lỗi tiềm ẩn xảy ra. Giải pháp đưa ra là viết trình xử lý ngoại lệ giúp chúng ta xác định rõ ràng những gì PHP nên làm nếu có vấn đề trong một khối mã. Trong bài viết này chúng ta cùng nhau tìm hiểu về cách xử lý ngoại lệ trong PHP.
Xem thêm:
Contents
Ngoại lệ là một dấu hiệu cho biết một sự kiện đặc biệt hoặc xảy ra lỗi. Ngoại lệ do nguyên nhân khác nhau như: lỗi kết nối cơ sở dữ liệu, truy vấn dữ liệu không thành công, tệp mà bạn đang cố gắng truy cập không tồn tại… PHP cung cấp một cơ chế xử lý ngoại lệ mạnh mẽ cho phép bạn xử lý ngoại lệ hiệu quả. Xử lý ngoại lệ được sử dụng để thay đổi luồng thông thường của việc thực hiện mã nếu xảy ra một lỗi (ngoại lệ).
Dưới đây là những gì thường xảy ra khi một ngoại lệ được kích hoạt:
– Trạng thái mã hiện tại được lưu
– Việc thực hiện mã sẽ chuyển sang một hàm xử lý ngoại lệ do người dùng định nghĩa
– Tùy thuộc vào tình huống, trình xử lý có thể tiếp tục thực hiện mã, chấm dứt việc thực hiện tập lệnh hoặc tiếp tục thực hiện mã từ một vị trí khác trong mã
Một số phương pháp xử lý ngoại lệ:
– Sử dụng ngoại lệ cơ bản
– Tạo một trình xử lý ngoại lệ tùy chỉnh
– Nhiều ngoại lệ
– Ném ra một ngoại lệ
– Thiết lập một trình xử lý ngoại lệ mức cao nhất
Lưu ý: Ngoại lệ chỉ nên được sử dụng với điều kiện lỗi, và không nên được sử dụng để nhảy đến một vị trí khác trong mã tại một điểm quy định.
Khi ngoại lệ được ném ra, những đoạn mã sau nó sẽ không được thực hiện, và PHP sẽ cố gắng tìm khối “catch” phù hợp. Nếu một ngoại lệ không được xử lý, sẽ xảy ra một lỗi nghiêm trọng với một thông báo “Uncaught Exception”.
Chúng ta hãy thử ném một ngoại lệ mà không được xử lý:
Đoạn mã trên sẽ xảy ra lỗi như sau:
Để tránh lỗi từ ví dụ trên, chúng ta cần phải tạo ra mã thích hợp để xử lý ngoại lệ.
Mã xử lý ngoại lệ bao gồm:
– Try – đoạn mã có khả năng xảy ra ngoại lệ nằm trong khối “try”. Nếu không xảy ra ngoại lệ mã sẽ tiếp tục như bình thường. Tuy nhiên nếu xảy ra ngoại lệ thì một ngoại lệ sẽ được ném ra.
– Throw – Ngoại lệ được kích hoạt. Mỗi “throw” phải bao gồm ít nhất một khối “catch”.
– Catch – lấy ra một ngoại lệ và tạo ra một đối tượng chứa thông tin ngoại lệ.
Đoạn mã trên sẽ hiển thị ra thông báo sau:
1. Hàm checkNum() kiểm tra nếu một số lớn hơn 1. Nếu điều kiện đúng ngoại lệ được ném ra
2. Hàm checkNum() được gọi trong khối “try”
3. Ngoại lệ trong hàm checkNum() được ném ra
4. Khối “catch” lấy ra ngoại lệ và tạo ra một đối tượng ($e) chứa thông tin ngoại lệ
5. Thông báo lỗi từ ngoại lệ được lặp lại bằng cách gọi $ e-> getMessage() từ đối tượng ngoại lệ.
Chúng ta có thể sử dụng nhiều ngoại lệ trong mã để kiểm tra cho nhiều điều kiện.
Chúng ta có thể sử dụng các câu lệnh điều khiển như if…else, switch, hoặc các ngoại lệ lồng nhau. Những ngoại lệ này sử dụng các lớp ngoại lệ khác nhau và trả về các thông báo lỗi khác nhau
Đoạn mã trên kiểm tra hai điều kiện và ném ra ngoại lệ nếu không điều kiện nào đúng.
– Lớp ngoại lệ customException() được tạo ra như một phần mở rộng của lớp ngoại lệ cũ. Theo cách này nó thừa hưởng tất cả các phương pháp và thuộc tính từ lớp ngoại lệ cũ.
– Hàm errorMessage() được tạo ra. Hàm này trả lại thông báo lỗi nếu địa chỉ email không hợp lệ
– Biến $email dùng để lưu địa chỉ email hợp lệ
– Khối “try” được thực hiện và ngoại lệ không bị ném ra trong điều kiện đầu tiên
– Điều kiện thứ hai gây ra ngoại lệ vì email chứa chuỗi “example”
– Khối “catch” xử lý ngoại lệ và thông báo ra lỗi phù hợp.
– Mã có thể được đặt trong khối try giúp bắt các trường hợp xảy ra ngoại lệ.
– Mỗi khối try hoặc throw phải có ít nhất một khối catch tương ứng
– Nhiều khối catch được sử dụng để bắt các lớp ngoại lệ khác nhau
Một nguyên tắc đơn giản: nếu bạn ném thứ gì đó, bạn phải bắt nó.
Dù bạn dùng phiên bản WordPress với lưu lượng truy cập cao hay một blog nhỏ trên máy chủ chia...
VR PLUS (https://vrplus.vn/ ) Là một trong những dự án do Lamvt thực hiện trong thời gian gần đây. Như...
Trong một năm qua, chúng tôi đã xuất bản khoảng 79 bài viết SEO trên blog Ahrefs. Các bài viết...
Khám phá kĩ thuật viết nội dung SEO Nếu không có SEO, nội dung của bạn có thể bị chìm...
Các website về lĩnh vực làm đẹp cần phải có một thiết kế (design) hấp dẫn và bắt mắt. Điều...
Như đã nói, phần mềm chỉnh sửa video đang ngày càng chứng tỏ được tầm quan trọng của mình, nhất...
Nhiều bạn thắc mắc là sau khi cài đặt Plugin cho Google AMP thì làm thế nào để kiểm tra,...
Các trang web giáo dục và các trang web của chính phủ có một lợi thế hơn trong bảng xếp...
Nội dung là một trong 3 tiêu chí quan trọng để google đánh giá thứ hạng tìm kiếm cho website...
Thẻ <span> </span> Thẻ <span> là thẻ khá đặc biệt trong HTML, theo mặc định thì thẻ <span> được thêm...