Bootstrap

Vũ Thành Lâm

Content - Code - SEO - MMO
17/10/1979
Tây Mỗ - Nam Từ Liêm - Hà Nội
thanhlam19792003

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)

Cách xử lý ngoại lệ trong PHP

5/5 - (4 bình chọn)

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:

Lập trình Web với ngôn ngữ PHP

Lập trình PHP cơ bản

Cách xử lý lỗi trong PHP

Cách xử lý ngoại lệ trong PHP php_exception

Contents

Ngoại lệ là gì?

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.

Sử dụng ngoại lệ cơ bản

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ý:

Cách xử lý ngoại lệ trong PHP throw_exception

Đoạn mã trên sẽ xảy ra lỗi như sau:

Cách xử lý ngoại lệ trong PHP fatal_error-1024x118

Try, throw và catch

Để 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ệ.

Cách xử lý ngoại lệ trong PHP handle_exception-1024x512

Đoạn mã trên sẽ hiển thị ra thông báo sau:

Cách xử lý ngoại lệ trong PHP exception_message-1024x54

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ệ.

Xử lý nhiều 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

Cách xử lý ngoại lệ trong PHP multi_exception-1024x808

Đ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.

Quy tắc xử lý ngoại lệ

– 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ó.

 

Tin mới nhất

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...

Tin được yêu thích

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...

Khách đang xem

  1. Câu hỏi: Tôi đang tạo một plugin WordPress. Tôi nên đưa những tính năng cơ bản gì vào uninstall feature...
    1 giây trước
  2. Dầu thủy lực là những vấn đề đầu tiên ảnh hưởng trực tiếp đến máy móc; hiệu suất làm việc...
    6 giây trước
  3. (Bài viết dành cho các Doanh nghiệp - Các chủ Website tự SEO - Các Newbie mới vào nghề) SEO...
    7 giây trước
  4. Câu hỏi Tôi có thêm một truy vấn tùy chỉnh/ truy vấn phụ vào mẫu file tùy chỉnh. Làm cách...
    3 giây trước
  5. Bạn muốn SEO cho website lên top? Đó là một công việc không hề dễ dàng. Trong quá trình SEO...
    10 giây trước
  6. Với một doanh nghiệp Star-Up non trẻ SEO có thể là một khái niệm mới mẻ và khó khăn. Dưới...
    28 giây trước
  7. Các gam màu có sức ảnh hưởng nhất định lên tâm lý của con người và trở thành một phần...
    9 giây trước
  8. Particles.js là một thư viện Javascript dùng để tạo ra các hạt. Thư viện Particles.js là mã nguồn mở và...
    24 giây trước
  9. Nếu bạn đang nghĩ rằng SEO vào năm 2018 sẽ chỉ là một phiên bản cập nhật của SEO 20xx...
    21 giây trước
  10. Dự án của Google Accelerated Mobile Pages (AMP) tăng tốc độ load trang web cho các thiết bị điện thoại...
    20 giây trước