Bắt tất cả ngoại lệ php

Ngoại lệ, lỗi và xử lý ngoại lệ là những nhiệm vụ rất quen thuộc đối với tất cả các thành viên lập trình. Bài viết này trình bày các vấn đề liên quan đến Exception trong PHP. PHP cung cấp các cơ chế giúp bắt lỗi, giám sát các lỗi và xử lý các lỗi có thể xảy ra khi thiết lập chương trình

Trong nhiều ứng dụng lớn, có thể mở rộng, trong các ứng dụng hướng đối tượng và các framework thì việc bắt các Exception trong quá trình phát triển là điều cực kỳ tốt

Xử lý ngoại lệ trong PHP – PHP Exceptions

Ngoại lệ [Exception] trong PHP là gì?

Bạn có thể hiểu nôm na ngoại lệ như sau. Trong chương trình lập trình, chúng ta sẽ tạo ra các đoạn mã, hàm, mảng mới mong muốn nó thực hiện bất kỳ hành động nào trong chương trình. Như vậy, tất cả các hành động có thể xảy ra mà khác với mong muốn thì nó chính là ngoại lệ [Ngoại lệ]

Và chúng ta sẽ không bao giờ muốn cho chương trình hoạt động của mình sai mong muốn phải không nào. Vì thế mà ta cần xử lý ngoại lệ để tránh những ngoại lệ làm hỏng chương trình

Trái ngược với hệ thống xử lý lỗi trong PHP, xử lý ngoại lệ là phương pháp đối tượng hướng đối tượng để xử lý lỗi, cung cấp biểu thức báo cáo lỗi linh hoạt và có kiểm soát viên tốt hơn

Các phương pháp xử lý ngoại lệ trong PHP

  • Sử dụng thử, ném và bắt
  • Tạo lớp ngoại lệ tùy chỉnh
  • Xử lý nhiều ngoại lệ
  • Ném lại một ngoại lệ
  • Thiết lập trình xử lý ngoại lệ cao cấp

Xử lý ngoại lệ [Xử lý ngoại lệ] trong PHP

Sử dụng thử, ném và bắt

Ta sẽ có một số khái niệm cần lưu ý dưới đây

Try − Một hàm sử dụng một ngoại lệ nên nằm trong khối try. Nếu ngoại lệ không xảy ra [không được kích hoạt], mã sẽ tiếp tục như bình thường. Tuy nhiên, nếu ngoại lệ xảy ra [được kích hoạt] thì ngoại lệ đó sẽ bị “ném ra”

Throw − Đây là cách bạn kích hoạt một ngoại lệ. Mỗi "ném" phải có ít nhất một "bắt"

Catch − Mỗi khối “catch” bắt một ngoại lệ và tạo một đối tượng chứa thông tin của ngoại lệ đó

Tổng hợp các cú pháp của try catch

Ví dụ

Kết quả

Before try block
Inside try block
After catch [will be always executed]
Before try block
Inside try block
Exception Caught: Number is zero.
After catch [will be always executed]

Trong đó Hàm demo[] kiểm tra nếu một số có bằng 0 hoặc không. Nếu điều kiện ngoại lệ không chính xác được ném ra. Khối “bắt” lấy ngoại lệ và tạo ra một đối tượng [$e] chứa thông tin ngoại lệ. 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ệ

Trong ví dụ trên, hàm $e->getMessage[] được sử dụng để lấy thông báo lỗi. Không chỉ có mỗi một hàm đó, dưới đây là một số hàm có thể được sử dụng từ lớp ngoại lệ trong PHP

Thông báo lỗi Một số hàm lấy

  • getMessage[] − notification of exception
  • getCode[] − mã của ngoại lệ
  • function getFile[] − tên tệp nguồn
  • getLine[] − dòng nguồn
  • getTrace[] − n array of backtrace[]
  • function getTraceAsString[] − string was format of trace
  • getClass[] – lớp có ngoại lệ

Từ ví dụ về try catch on ta có thể thêm vào như sau

Kết quả.

2

Đầu tiên ta sẽ tạo một lớp có tên myException được kế thừa từ lớp Exception, như vậy, nó sẽ kế thừa tất cả các phương thức và thuộc tính từ lớp Exception

Trong lớp trên sẽ tạo một hàm get_message để thông báo lỗi nếu một số truyền vào bằng 0

Ra khỏi lớp, tạo một hàm demo[] với nội dung bên trong khi thực hiện, hãy thử bắt để kiểm tra xem số truyền vào có bằng 0 không. Nếu số bằng 0, một ngoại lệ sẽ bị ném và sau đó khối bắt sẽ bắt ngoại lệ về rồi hiển thị thông tin lỗi

Xử lý nhiều ngoại lệ – Multiple Exceptions

Nhiều ngoại lệ là cách sử dụng nhiều khối try…catch để cố gắng bắt các ngoại lệ bị ném ra

Ở phương pháp này, 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 vào nhau

Cú pháp tổng thể

try {
     // Some code...
} catch [ExceptionType1 | ExceptionType2 $e] {
     // Code to handle the exception
} catch [\Exception $e] {
     // ...
}

Ví dụ

________số 8

Xử lý nhiều ngoại lệ sẽ hữu ích khi bạn muốn hiển thị thông báo hoặc thực hiện một hành động bất kỳ tùy thuộc vào mỗi ngoại lệ được ném ra

Thiết lập xử lý ngoại lệ cao cấp – Set Top Level Exception Handler

Hàm set_Exception_handler[] sẽ đặt tất cả hàm do người dùng đã xác định thành tất cả ngoại lệ chưa được lưu

Trong đoạn mã trên không có khối "bắt". Thay vào đó, quá trình xử lý ngoại lệ cấp cao nhất được kích hoạt. Hàm này nên được sử dụng để bắt các ngoại lệ chưa được bắt

Kết quả

0

ví dụ khác

0
1

Tham khảo

  • https. //www. php. net/manual/vi/ngôn ngữ. ngoại lệ. php
  • https. //www. chuyên viên máy tính. org/xử lý ngoại lệ-trong-php/
  • https. // stackoverflow. com/câu hỏi/8439581/bắt-nhiều-ngoại lệ-loại-trong-một-bắt-khối/37522012
  • https. //github. com/php/php-src/cam kết/0aed2cc2a440e7be17552cc669d71fdd24d1204a

end

Bài viết trên mình đã liệt kê một vài cách để xử lý các ngoại lệ trong chương trình PHP. Mỗi bài viết về kiến ​​thức học PHP của mình đều có thể chưa hoàn chỉnh đầy đủ nên mong các bạn hãy tra google khi tham khảo và mong các bạn có thể gửi lại comment bổ sung bên dưới để mình có thể hoàn thiện lại bài viết . Cảm ơn các bạn

Nếu các bạn cảm thấy Website TanHongIT. Com thật sự hữu ích mình mong các bạn có thể share những bài viết để cộng đồng cùng thảo luận nhé. Cảm ơn các bạn

Các bạn có bất kỳ thắc mắc nào cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, học khóa,… thì cứ comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé. Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất

Chủ Đề