Hướng dẫn Xử lý Ngoại lệ trong PHP - Error Handing in PHP

Ngày đăng: 27/04/2019   -    Cập nhật: 13/08/2019
Trong quá trình lập trình, chúng ta thường sẽ gặp lỗi (ngoại lệ) hay còn gọi là Exception. Và khi nó xảy ra chúng ta cần phải giải quyết nó một cách đẹp đẽ để mang lại trải nghiệm tốt nhất cho người dùng.

Hướng dẫn Xử lý Ngoại lệ trong PHP

Hướng dẫn Xử lý Ngoại lệ trong PHP

Vậy chính xác ngoại lệ trong PHP là gì?


Ngoại lệ (Exception): Là những lỗi xảy ra trong quá trình thực thi một chương trình, có thể làm thay đổi luồng thực thi của chương trình, hoặc khiến chương trình bị dừng một cách đột ngột không như mong muốn.

Khi chương trình PHP có lỗi, ta gọi là chương trình đã ném (throw) ra ngoại lệ. Để tránh những ngoại lệ xảy ra, ta cần viết mã để bắt (catch) ngoại lệ.

PHP cung cấp một cơ chế xử lý ngoại lệ, thông qua việc sử dụng các khối lệnh try-catch.


  • Khối try: Là khối lệnh dùng để thử lỗi. Trong khối try, ta sẽ đặt vào các đoạn mã có khả năng gây ra ngoại lệ, để kiểm tra xem có phát sinh ra ngoại lệ hay không. Khối try không thể sử dụng độc lập, mà sau nó cần phải có khối catch.

  • Khối catch: Là khối lệnh dùng để xử lý (bắt) ngoại lệ. Trong khối catch, ta sẽ viết mã để xử lý ngoại lệ, đơn giản nhất là có thể in thông tin chi tiết về ngoại lệ đã xảy ra, để dễ dàng cho việc sửa lỗi. Mỗi khối catch sẽ có khai báo một biến, biến này dùng để chứa thông tin về ngoại lệ đã xảy ra.

VD như: kiểu ngoại lệ, thông điệp mô tả ngoại lệ, dòng lệnh phát sinh ngoại lệ v.v…

Cơ chế hoạt động của khối try-catch như sau:


Khi một dòng lệnh của khối try ném ra ngoại lệ, khối try sẽ dừng thực hiện tại dòng lệnh đó, tất cả các câu lệnh sau đó sẽ không được thực thi.

Chương trình sẽ chuyển đến khối catch để xử lý ngoại lệ. Nếu sau khối try có nhiều khối catch, chương trình sẽ lần lượt đánh giá từng khối catch, để xem khối catch nào tương thích với ngoại lệ, để thực thi nhằm xử lý ngoại lệ được ném ra.

Nếu khối try không ném ra ngoại lệ, chương trình sẽ bỏ qua, không thực hiện các khối catch.

Sau một khối try có thể có nhiều khối catch, trong trường hợp ta muốn xử lý nhiều loại ngoại lệ có thể xảy ra đối với mã nguồn.

Để ném ra ngoại lệ một cách chủ động, ta sử dụng từ khóa throw.
 
Nếu ta không xử lý ngoại lệ, khi có ngoại lệ xảy ra, chương trình sẽ ném ra một Fatal Error, cùng với thông báo Uncaught Exception như ví dụ sau:


Tình huống chưa xử lý ngoại lệ trong chương trình PHP

Tình huống chưa xử lý ngoại lệ trong chương trình PHP

Ở đây, ta đã định nghĩa một hàm cho phép ném ra ngoại lệ khi tham số < 0. Sau đó ta gọi hàm để kiểm tra ngoại lệ. Chương trình này không xử lý ngoại lệ thông qua khối try-catch.

Kết quả của chương trình như sau:

Chương trình ném ra một lỗi Fatal error xảy ra khi ta chưa xử lý ngoại lệ

Chương trình ném ra một lỗi Fatal error xảy ra khi ta chưa xử lý ngoại lệ

Ta thấy thông báo lỗi rất dài và khó hiểu đối với người dùng như hình trên.

Để cung cấp thông báo lỗi thân thiện, cũng như để xử lý ngoại lệ, ta hãy khảo sát ví dụ dưới đây:


Ví dụ về xử lý ngoại lệ trong PHP

 
Ví dụ chương trình kiểm tra tuổi để sử dụng try catch khi có ngoại lệ

Ví dụ chương trình kiểm tra tuổi để sử dụng try catch khi có ngoại lệ

Trong bài này, ta đã định nghĩa hàm giống bài ở trên, nhưng ta cung cấp cơ chế xử lý ngoại lệ, thông qua việc sử dụng khối try-catch.

Sử dụng khối Try ... Catch để xử lý ngoại lệ trong PHP

Sử dụng khối Try ... Catch để xử lý ngoại lệ trong PHP

Trong hàm ta ném ra ngoại lệ, đồng thời truyền thông báo lỗi nếu tham số là số <0.

Trong khối try, ta gọi hàm, đồng thời truyền giá trị <0 vào hàm. Khối catch ta in thông báo lỗi xảy ra.

Kết quả của chương trình như sau, thông báo lỗi được hiển thị cho người dùng như hình bên dưới:


Kết quả của chương trình sau khi xử lý ngoại lệ bằng Try ... Catch

Kết quả của chương trình sau khi xử lý ngoại lệ bằng Try ... Catch

Tổng kết

Như vậy là bạn đã biết các sử dụng try...catch để xử lý ngoại lệ trong PHP. Hãy để lại comment ở bên dưới nếu bạn chưa nắm rõ phần nào nhé.

>>> Hoặc có thể đăng ký ngay Khóa học Lập trình PHP tại NIIT - ICT Hà Nội để được giải đáp tất cả các vấn đề trong PHP.



---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150 
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp

Bình luận Facebook
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!