Hướng dẫn try catch foreach php - thử bắt foreach php

Nội dung chính ShowShow

  • 1. Ngoại lệ (Exception) là cái khỉ gì?
  • 2. Xử lý lỗi trong PHP (PHP Error handling)
  • Chúng ta sẽ tìm hiểu về 3 phương pháp xử lý lỗi sau đây:
  • 3. Ví dụ về cách xử lý lỗi trong chương trình PHP
  • Các cấp độ report lỗi trong error_reporting
  • 4. Sự khác nhau của Lỗi (Errors) và Ngoại lệ (Exception)
  • Phương thức getMessage():
  • Phương thức getCode():
  • Phương thức getFile():
  • Phương thức getLine():
  • Phương thức getTrace():
  • Phương thức getPrevious():
  • Phương thức getTraceAsString():
  • Phương thức __toString():
  • Cú pháp để ném ra một ngoại lệ
  • 5. Ví dụ sử dụng Try Catch PHP để xử lý ngoại lệ
  • 6. Multiple Exceptions (Nhiều ngoại lệ)
  • Ví dụ về cách sử dụng Multiple Exceptions trong PHP:
  • Bạn đã hiểu hơn về Try Catch trong PHP rồi đấy!

1. Ngoại lệ (Exception) là cái khỉ gì?

Bạn đã nghe nhiều đến Bug (hay còn gọi là lỗi) hoặc ngoại lệ trong lập trình rồi nhỉ?Bug (hay còn gọi là lỗi) hoặc ngoại lệ trong lập trình rồi nhỉ?

Ví dụ thế này, bỗng một ngày đẹp trời bạn lướt facebook và bấm thả tim vào ảnh Crush của mình.

Nhưng mà Fb lại bị lỗi khiến bạn không thể bấm thả tim được (Số trời định =))).

Yên tâm, đây chỉ là lỗi kỹ thuật thôi.

Điều này xảy ra mà các lập trình viên của Facebook không ngờ tới.

Một ví dụ nữa, khi bạn đăng bài Facebook chẳng hạn. Bạn muốn post tấm hình bạn vừa chụp lên Facebook, theo quy định thì Facebook sẽ giảm chất lượng của tất cả các tấm ảnh tải lên.

Nhưng hôm đấy máy chủ của Facebook bị "đơ" và không giảm dung lượng tấm ảnh của bạn.

Đây là một ngoại lệ, xảy ra bên ngoài các trường hợp thông thường.

Túm lại, để đơn giản.

Bạn có thể hiểu là, chúng ta lập trình và mong muốn nó hành động nào đó.

Và tất cả các hành động khác với mong muốn thì nó là ngoại lệ (Exception).ngoại lệ (Exception).

Dĩ nhiên là bạn sẽ không muốn những ngoại lệ này phá hỏng chương trình của bạn rồi.

Vì thế, bạn cần xử lý ngoại lệ.xử lý ngoại lệ.

Bài này mình sẽ giúp bạn hiểu thêm về:

  • Xử lý lỗi trong PHP
  • Ví dụ về xử lý lỗi trong PHP
  • Sự khác biệt giữa lỗi và ngoại lệ
  • Nhiều ngoại lệ

2. Xử lý lỗi trong PHP (PHP Error handling)

Khi lỗi xảy ra, PHP hiển thị lỗi với một số thông tin để giúp bạn biết lỗi đó là gì và nằm ở chỗ nào.lỗi xảy ra, PHP hiển thị lỗi với một số thông tin để giúp bạn biết lỗi đó là gì và nằm ở chỗ nào.

Dĩ nhiên là thông báo lỗi này không được thân thiện cho lắm.

Nên người dùng sẽ chẳng hiểu là lỗi gì. Họ chỉ biết là họ đang có trải nghiệm tệ.

Vì thế, để tránh làm các "Thượng đế" phật lòng.

PHP cung cấp một số cách để xử lý lỗi.

Chúng ta sẽ tìm hiểu về 3 phương pháp xử lý lỗi sau đây:

  • Die statements - hàm die là hàm kết hợp giữa echo và hàm thoát lại với nhau. Nó phù hợp khi chúng ta muốn hiển thị một tin nhắn và ngừng lại kịch bản thực thi khi gặp lỗi. - hàm die là hàm kết hợp giữa echo và hàm thoát lại với nhau. Nó phù hợp khi chúng ta muốn hiển thị một tin nhắn và ngừng lại kịch bản thực thi khi gặp lỗi.
  • Custom error handlers - Đây là phương pháp chúng ta tự thiết lập để xử lý mỗi khi xảy ra lỗi. - Đây là phương pháp chúng ta tự thiết lập để xử lý mỗi khi xảy ra lỗi.
  • PHP error reporting - Lỗi tùy thuộc vào thiết lập của trình report lỗi của PHP. Phương pháp này rất hữu ích khi bạn chẳng có ý tưởng gì về nguyên nhân xảy ra lỗi. Các thông tin về lỗi sẽ giúp bạn nhận thức lỗi và tìm kiếm cách xử lý. - Lỗi tùy thuộc vào thiết lập của trình report lỗi của PHP. Phương pháp này rất hữu ích khi bạn chẳng có ý tưởng gì về nguyên nhân xảy ra lỗi. Các thông tin về lỗi sẽ giúp bạn nhận thức lỗi và tìm kiếm cách xử lý.

3. Ví dụ về cách xử lý lỗi trong chương trình PHP

Trước tiên chúng ta thử đến với một số lỗi cơ bản.

Ví dụ: C

húng ta đang viết một chương trình PHP để thực hiện chia 2 số với nhau. một chương trình PHP để thực hiện chia 2 số với nhau.

Đoạn code PHP cho chương trình trên như sau:

Giả sử bạn đã lưu file simple_error ở trong thư mục phptuts.

Mở đường dẫn này http://localhost/phptuts/simple_error.php trên trình duyệt.

Chúng ta nhận được kết quả như sau:

Hướng dẫn try catch foreach php - thử bắt foreach php

Ví dụ về lỗi đơn giản trong chương trình PHP

 

Như các bạn có thể nhìn thấy ở kết quả trên, chương trình xảy ra lỗi và hiển thị lỗi cho người dùng thấy.

Việc này là không chuyên nghiệp và khiến khách hàng khó chịu.

Chúng ta thử sửa đổi chương trình trên, viết cho nó một cách xử lý trong trường hợp này:

Lưu code lại và lại chạy tệp http://localhost/phptuts/error_handling.php trên trình duyệt.

Xử lý lỗi theo cách thông thường

 

Như các bạn có thể nhìn thấy ở kết quả trên, chương trình xảy ra lỗi và hiển thị lỗi cho người dùng thấy.

Việc này là không chuyên nghiệp và khiến khách hàng khó chịu.

Chúng ta thử sửa đổi chương trình trên, viết cho nó một cách xử lý trong trường hợp này:custom error handlers

Lưu code lại và lại chạy tệp http://localhost/phptuts/error_handling.php trên trình duyệt.

Xử lý lỗi theo cách thông thường

Chúng ta nhận được thông báo là không thể chia hết cho 0.

 

Như các bạn có thể nhìn thấy ở kết quả trên, chương trình xảy ra lỗi và hiển thị lỗi cho người dùng thấy.custom error handlers cho phép chúng ta tùy chỉnh tin nhắn thông báo lỗi cho thân thiện và rõ ràng hơn.

Việc này là không chuyên nghiệp và khiến khách hàng khó chịu.

Chúng ta thử sửa đổi chương trình trên, viết cho nó một cách xử lý trong trường hợp này: có cú pháp như sau:

Lưu code lại và lại chạy tệp http://localhost/phptuts/error_handling.php trên trình duyệt.

  • Xử lý lỗi theo cách thông thường là tên của hàm report lỗi được PHP cung cấp sẵn,
  • Chúng ta nhận được thông báo là không thể chia hết cho 0. là tham số tùy chọn cho phép chúng ta tùy chọn cấp độ report lỗi. Nếu không chỉ định cấp độ report lỗi, PHP sẽ sử dụng báo cáo mặc định được quy định trong file php.ini

Các cấp độ report lỗi trong error_reporting


Cách thông báo lỗi này thân thiện hơn là cách ở trên phải không? Mô tả
 error_reporting(E_WARNING);  Chỉ có cảnh báo lỗi, không ngừng việc thực thi chương trình
 error_reporting(E_NOTICE);  Hiển thị, thông báo rằng có khả năng chương trình chạy bình thường hoặc lỗi
 error_reporting(E_USER_ERROR);  Màn hình của người dùng sẽ hiện ra lỗi
 error_reporting(E_USER_WARNING);  Màn hình của người dùng tạo tin nhắn cảnh báo
 error_reporting(E_USER_NOTICE);  Màn hình của người dùng hiện ra thông báo lỗi
 error_reporting(E_RECOVERABLE_ERROR);  Hiển thị lỗi không trí mạng và có thể điều chỉnh bằng cách sử dụng  custom error handlers
 error_reporting(E_ALL);  Hiển thị tất cả lỗi và cảnh báo

4. Sự khác nhau của Lỗi (Errors) và Ngoại lệ (Exception)

Ngoại lệ (Exception) là trường hợp được ném và bắt trong khi lỗi thường không thể thu hồi lại. (Exception) là trường hợp được ném và bắt trong khi lỗi thường không thể thu hồi lại.

Exception được xử lý trong hướng đối tượng.

Điều này có nghĩa là khi ngoại lệ được ném ra, một đối tượng ngoại lễ sẽ được tạo và chứa thông tin chi tiết về ngoại lệ đó.

Dưới đây là một số phương thức của đối tượng Exception.

Phương thức getMessage():

Phương thức getMessage() hiển thị tin nhắn ngoại lệ:getMessage() hiển thị tin nhắn ngoại lệ:

Phương thức getCode():

Phương thức getCode() hiển thị các mã số là đại diện của các loại ngoại lệ.

Phương thức getFile():

Phương thức getFile() hiển thị tên các tập tin và đường dẫn nơi xảy ra ngoại lệ.

Phương thức getLine():

Phương thức getLine() hiển thị các dòng xảy ra ngoại lệ:

Phương thức getTrace():

Phương thức simple_error0 hiển thị một loạt các dấu vết trước chương trình xảy ra ngoại lệ:

Phương thức getPrevious():

Phương thức simple_error1 hiển thị các ngoại lệ trước khi xảy ra trường hợp hiện tại:

Phương thức getTraceAsString():

Phương thức simple_error2 hiển thị một loạt các dấu vết của ngoại lệ như một chuỗi thay vì một mảng:simple_error2 hiển thị một loạt các dấu vết của ngoại lệ như một chuỗi thay vì một mảng:

Phương thức __toString():

Phương thức simple_error3 hiển thị toàn bộ ngoại lệ như một chuỗi.

Cú pháp để ném ra một ngoại lệ

Ở đây chúng ta có:

  • throw là keyword sử dụng để ném ra một ngoại lệ là keyword sử dụng để ném ra một ngoại lệ
  • new Exception(...) tạo ra một đối tượng ngoại lệ và truyền chuỗi "simple_error4" như một tham số. tạo ra một đối tượng ngoại lệ và truyền chuỗi "simple_error4" như một tham số.

Đối với đoạn mã trên thì chúng ta nhận được thông báo như sau:

Sử dụng throw keyword để ném ra một ngoại lệ

 

Bây giờ chúng ta sẽ xem một ví dụ sử dụng simple_error5 để xử lý ngoại lệ.simple_error5 để xử lý ngoại lệ.

5. Ví dụ sử dụng Try Catch PHP để xử lý ngoại lệ

Ví dụ sử về cách sử dụng try catch để xử lý ngoại lệ trong Lập trình PHP

 

Bây giờ chúng ta sẽ xem một ví dụ sử dụng simple_error5 để xử lý ngoại lệ.

5. Ví dụ sử dụng Try Catch PHP để xử lý ngoại lệtry catch php:

  • Ví dụ sử về cách sử dụng try catch để xử lý ngoại lệ trong Lập trình PHP đây là block code thực thi nói rằng, có thể nó sẽ xảy ra ngoại lệ.
  • Cú pháp của simple_error6 như sau: Đây là block code sử dụng để bắt ngoại lệ được ném ra và gán đối tượng ngoại lệ cho biến simple_error7.

Giải thích cú pháp try catch php:

try{...} đây là block code thực thi nói rằng, có thể nó sẽ xảy ra ngoại lệ.

catch (Exception $e){...} Đây là block code sử dụng để bắt ngoại lệ được ném ra và gán đối tượng ngoại lệ cho biến simple_error7.

 

Bây giờ chúng ta sẽ xem một ví dụ sử dụng simple_error5 để xử lý ngoại lệ.cấu trúc try tùy theo kiểu của ngoại lệ được ném ra.

5. Ví dụ sử dụng Try Catch PHP để xử lý ngoại lệ

Ví dụ sử về cách sử dụng try catch để xử lý ngoại lệ trong Lập trình PHP sử dụng nhiều block simple_error9 để cố gắng bắt các ngoại lệ được ném ra.

Cú pháp của simple_error6 như sau:

  • Giải thích cú pháp try catch php:
  • try{...} đây là block code thực thi nói rằng, có thể nó sẽ xảy ra ngoại lệ.

catch (Exception $e){...} Đây là block code sử dụng để bắt ngoại lệ được ném ra và gán đối tượng ngoại lệ cho biến simple_error7.Multiple Exceptions

Ví dụ bên dưới đây sẽ cố tình ném ra một ngoại lệ và bắt lại nó:

Mở đường dẫn simple_error8 bạn sẽ nhận được kết quả như sau:

Kết quả của một ví dụ sử dụng try catch php để xử lý ngoại lệ

  • Nó cũng có thể tạo nhiều ngoại lệ cho một cấu trúc try tùy theo kiểu của ngoại lệ được ném ra.
  • 6. Multiple Exceptions (Nhiều ngoại lệ)

Multiple Exceptions sử dụng nhiều block simple_error9 để cố gắng bắt các ngoại lệ được ném ra.

Multiple Exception có ích khi:

Bạn muốn hiển thị thông điệp tùy thuộc vào ngoại lệ được ném ra

Bạn muốn thực hiện một hành động độc đáo tùy thuộc vào ngoại lệ được ném ra.

Sơ đồ dưới đây cho bạn thấy cách hoạt động của Multiple Exceptions

Sơ đồ xử lý của Multiple Exceptionstry catch PHP này bạn đã biết:

  • Ví dụ về cách sử dụng Multiple Exceptions trong PHP:là kết quả bất ngờ của chương trình lập trình
  • Ở ví dụ bên dưới đây chúng ta dự kiến cho 2 trường hợp ngoại lệ xảy ra: cải thiện hiệu suất của ứng dụng
  • Chia cho số 0
  • Chia cho số âm(Ngoại lệ) thì giống như lỗi, nhưng chúng ta có thể sử dụng try catch php để bắt ngoại lệ.
  • Chạy chương trình và chúng ta nhận được kết quả:
Chương trình xử lý khi rơi vào trường hợp chia cho số 0Lập trình web với PHP bạn sẽ được hướng dẫn kỹ càng về cách xử lý ngoại lệ thường gặp trong lập trình web.

Bây giờ chúng ta thử truyền vào một số là phptuts0 thử xem sao.