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í 15++ 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

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

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

Core Web Vitals được đo lường như thế nào? Làm thế nào để bạn biết các bản sửa lỗi đã...

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. Tôi đã từng tạo trang địa điểm cho một nhà hàng có nhiều vị trí (multi-location). Đây là một xu hướng...
    11 giây trước
  2. Facebook ngày càng được nhiều đối tượng biết đến, sử dụng và đang dần phổ biến hơn. Để đáp ứng...
    28 giây trước
  3. Nếu bạn làm một công việc dễ dàng thì sự đơn điệu trong cuộc sống, đơn điệu trong công việc...
    16 giây trước
  4. Mạng xã hội hiện nay đang là món ăn tinh thần không thể thiếu với mỗi bạn trẻ. Zalo, Instagram,...
    29 giây trước
  5. CLS là gì? Cách khắc phục sự cố CLS có khó không? Là một trong những thắc mắc được rất nhiều...
    3 giây trước
  6. Nếu trang web của bạn không được tìm thấy trong trang đầu tiên của Google và các công cụ tìm...
    9 giây trước
  7. Việc tối ưu hóa công cụ tìm kiếm nghe có vẻ phức tạp, nhưng nếu chịu khó tìm hiểu các...
    19 giây trước
  8. Bước vào kỷ nguyên công nghệ hiện đại 4.0, cùng với sự phát triển mạnh mẽ của mạng xã hội...
    24 giây trước
  9. Backlink vẫn là chỉ số chính mà Google sử dụng để xác định thẩm quyền của một blog. Nếu các...
    2 giây trước
  10. Hôm nay là đúng vào dịp nghỉ lễ, người người vui vẻ, nô nức đi mua sắm, vui chơi khiến...
    19 giây trước