Ngoại lệ php lấy tệp và dòng

Xin chào tất cả mọi người, bài viết này mình xin trình bày về xử lý lỗi và Exception trong PHP, rất mong được sự theo dõi của mọi người

1] Xử lý lỗi

Xử lý lỗi là tiến trình phát hiện lỗi được tạo khi chạy mã của bạn và sau đó thực hiện các hành động thích hợp. Nếu bạn xử lý lỗi không chính xác, thì có thể dẫn đến nhiều kết quả không mong đợi

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

1. 1] Hàm chết[] và thoát[]

  • Để bắt lỗi trong PHP ta có thể sử dụng hàm die[] hoặc hàm exit[]
  • Khi sử dụng hàm die[] hoặc exit[], một thông báo sẽ được chụp ra và chương trình sẽ bị dừng lại

1. 2] Tự định nghĩa hàm để xử lý lỗi trong PHP

  • Để xác định hàm định nghĩa để xử lý lỗi, ta có thể sử dụng cú pháp

    
    
    3

  • Hàm xử lý lỗi tùy chỉnh phải có ít nhất hai tham số [error_level và errstr] bắt buộc, ngoài ra nó còn có thêm ba tham số [errfile, errline và errcontext] không bắt buộc, như được mô tả dưới đây

    • sai lầm. Xác định mức độ lỗi, dưới dạng một số nguyên. Điều này tương ứng với hằng số cấp độ lỗi phù hợp [E_ERROR, E_WARNING,. ]
    • errstr. Xác định lỗi thông báo dưới dạng chuỗi
    • hồ sơ lỗi. Xoá tên tệp của lệnh trong trường hợp xảy ra lỗi
    • sai lầm. Specify the number of lines that error
    • bối cảnh sai. Xác định một mảng chứa tất cả các biến và giá trị của chúng tồn tại tại thời điểm xảy ra lỗi. Tham số này rất hữu ích để giải quyết lỗi
  • Các mức lỗi trong PHP

Mức độ lỗiGiá trịMô tảE_ERROR1Một lỗi thời gian chạy nghiêm trọng. Việc thực thi kịch bản bị dừng lại ngay lập tứcE_WARNING2Các lỗi không nghiêm trọng và việc thực thi kịch bản không bị dừng lạiE_NOTICE8Một thời gian chạy thông báo. Cho biết rằng tập lệnh gặp lỗi có thể xảy ra lỗi, mặc dù tình trạng khó chịu cũng có thể xảy ra khi chạy tập lệnh bình thườngE_USER_ERROR256Một thông báo lỗi do người dùng tạo ra. Điều này giống như một E_ERROR, ngoại trừ việc nó được tạo bởi tệp lệnh PHP bằng cách sử dụng hàm trigger_error [] chứ không phải là PHP engineE_USER_WARNING512Một thông báo cảnh báo không có trí tuệ mạng do người dùng tạo ra. Điều này giống như một E_WARNING, ngoại trừ việc nó được tạo bởi tập lệnh PHP bằng cách sử dụng hàm trigger_error[] chứ không phải PHP engineE_USER_NOTICE1024Một thông báo thông báo do người dùng tạo ra. Điều này giống như một E_NOTICE, ngoại trừ việc nó được tạo bởi tệp lệnh PHP bằng cách sử dụng hàm trigger_error [] chứ không phải kích hoạt PHP engineE_STRIC2048Không hoàn toàn là một lỗi, nhưng được kích hoạt bất kỳ khi bất kỳ mã PHP nào có thể dẫn đến . 4. 0

Ví dụ


Như vậy, chúng ta có tùy chọn chỉnh sửa thông báo lỗi cho thân thiện và rõ ràng hơn

2] Ngoại lệ

  • Ngoại lệ là một giải pháp quản lý lỗi kiểu hướng đối tượng

  • Nó là một lớp được xây dựng sẵn trong ngôn ngữ PHP

  • Một đối tượng ngoại lệ sẽ chứa các thông tin về nơi xảy ra lỗi [tên tệp, số dòng]

  • Một số từ khóa liên quan tới Ngoại lệ

    • Thử. avalid code is aException in block in the block “try”. Nếu không xảy ra lỗi mã sẽ tiếp tục như bình thường. Tuy nhiên, nếu ngoại lệ xảy ra, thì một ngoại lệ sẽ bị ném ra
    • Ném. Unable to active. Mỗi "ném" phải bao gồm ít nhất một khối "bắt"
    • Chụp lấy. 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ú pháp

try 
{
    //Khối lệnh mà có thể phát sinh Exception
} 
catch [Exception $e] 
{    
    //Khối lệnh bắt được Exception
}

Ví dụ


  • Hàm checkNum[] kiểm tra nếu một số lớn hơn 1. Nếu điều kiện ngoại lệ không chính xác được ném ra
  • Hàm checkNum[] được gọi trong khối “try”
  • Ngoại lệ trong hàm checkNum[] bị 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. Dưới đây là một số hàm có thể được sử dụng từ lớp ngoại lệ trong PHP

  • getMessage[]. Hiển thị tin nhắn ngoại lệ
  • nhận được mã[]. Hiển thị các mã số là đại diện của các ngoại lệ
  • có được file[]. Hiển thị tên tệp và đường dẫn nơi xảy ra lỗi
  • theo hàng[]. Shows the exception lines
  • getTrace[]. Hiển thị trả về thông tin truy tìm lỗi là một mảng tên tệp và dòng số
  • getPrevious[]. Hiển thị các ngoại lệ trước khi xảy ra trường hợp hợp lệ tại
  • getTraceAsString[]. Hiển thị một chuỗi các dấu vết của ngoại lệ như một chuỗi thay vì một mảng
  • 
    
    4. Hiển thị toàn bộ ngoại lệ dưới dạng một chuỗi

2. 1 Tạo một lớp ngoại lệ tùy chỉnh Nếu lớp ngoại lệ mặc định chưa đủ dùng cho bạn, bạn có thể tạo ra các ngoại lệ riêng bằng cách kế thừa lớp ngoại lệ

  • Chú ý, chỉ có phương thức khởi tạo
    
    
    5 và
    
    
    6 của Exception có thể ghi đè trong lớp kế thừa, còn lại các phương thức khác không thể ghi đè vì nó được định nghĩa là cuối cùng

Ví dụ

________số 8

2. 2] Xử lý nhiều ngoại lệ

  • Nhiều ngoại lệ sử dụng nhiều khối thử. catch để cố gắng bắt các ngoại lệ đã bị ném ra

Ví dụ


2. 3] Thiết lập Xử lý ngoại lệ toàn cục Khi ứng dụng phát sinh ngoại lệ bằng lệnh ném, nếu ngoại lệ không bị bắt lại bằng khối lệnh thử. chụp lấy. thì ngoại lệ đó sẽ chuyển cho hàm xử lý ngoại lệ mặc định của PHP. Time if you want to create this default function, doing like after. Tạo hàm riêng xử lý ngoại lệ có dạng function my_Exception_handler[$Exception], sau đó sử dụng hàm set_Exception_handler['my_Exception_handler'] để đăng ký với PHP

Ví dụ


0

Kết bài

Như vậy là trong bài này mình đã trình bày về xử lý lỗi và ngoại lệ trong PHP cám ơn tất cả mọi người đã theo dõi

Làm cách nào để lấy số dòng từ một ngoại lệ trong PHP?

Phương thức getLine[] trả về số dòng của dòng mã đã tạo ra ngoại lệ.

Làm cách nào để lấy tên của tệp ném ngoại lệ trong PHP?

Ngoại lệ PHP Phương thức getFile[] .

Làm cách nào để bắt ngoại lệ trong PHP?

Bởi vì các ngoại lệ là các đối tượng, tất cả chúng đều mở rộng một lớp Ngoại lệ tích hợp sẵn [xem Ném ngoại lệ trong PHP], có nghĩa là việc bắt mọi ngoại lệ PHP được ném ra cũng đơn giản như type- . thử { //. } bắt [ \Exception $e ] { //. }: try { // .. } catch [ \Exception $e ] { // .. }

Làm cách nào để bỏ qua ngoại lệ trong PHP?

Có thể bỏ qua lỗi bên cạnh dòng mã vi phạm bằng cách sử dụng thẻ PHPDoc trong nhận xét. @phpstan-ignore-line . @ phpstan-bỏ qua-dòng tiếp theo.

Chủ Đề