Điều nào sau đây là một ngoại lệ trong PHP?

Trước khi họ xuất hiện, hầu hết mọi người chỉ sử dụng throw new Exception[...] cũ đơn giản hoặc tạo lớp Ngoại lệ của riêng họ để mở rộng lớp Ngoại lệ cơ sở

Nhưng bây giờ chúng tôi có tùy chọn sử dụng [hoặc mở rộng] các loại ngoại lệ cụ thể

Và bạn phải luôn sử dụng các ngoại lệ SPL [hoặc mở rộng chúng bằng một lớp con] và không bao giờ sử dụng /Exception đơn giản nữa

Các lớp ngoại lệ SPL là gì?

Có khoảng một chục lớp ngoại lệ SPL, tất cả cuối cùng đều mở rộng lớp cơ sở \Exception

Bản thân chúng không thực sự làm bất cứ điều gì đặc biệt, nhưng có thể được sử dụng để báo cáo và xử lý một số loại lỗi nhất định

Chúng được sử dụng theo cùng một cách - chỉ cần sử dụng throw new OverflowException

Tại sao bạn nên sử dụng ngoại lệ SPL?

Họ đưa ra báo cáo lỗi chi tiết hơn. Đó là một thực tiễn tồi khi có 100 dòng mã ném chỉ Exception. Lý tưởng nhất là bạn nên có các Ngoại lệ tùy chỉnh của riêng mình [sẽ mở rộng các ngoại lệ SPL], nhưng sẽ không thực tế khi làm điều này mỗi khi bạn có thể đưa ra một ngoại lệ

13 ngoại lệ SPL bao gồm nhiều tình huống phổ biến mà bạn sẽ gặp phải, chẳng hạn như đối số không hợp lệ [InvalidArgumentException] hoặc tràn [OverflowException]

Cách chọn ngoại lệ thích hợp

Đôi khi, có thể thực sự rõ ràng nên ném ngoại lệ nào [hoặc mở rộng với một lớp con], tuy nhiên, có một số trường hợp không rõ ràng hoặc nơi nó có thể phù hợp với hai hoặc nhiều lớp ngoại lệ

Khi không rõ nên chọn cái nào, bạn luôn có thể sử dụng lớp ngoại lệ gốc. Có hai lớp 'chính'

  • LogicException bao gồm các lớp con sau
    • BadFunctionCallException
      • BadMethodCallException
    • Ngoại lệ tên miền
    • Ngoại lệ đối số không hợp lệ
    • Độ dàiNgoại lệ
    • OutOfRangeNgoại lệ
  • RuntimeException bao gồm các lớp con sau
    • OutOfBoundsNgoại lệ
    • Tràn ngoại lệ
    • Phạm viException
    • UnderflowException
    • UnexpectedValueException

Vì vậy, bạn luôn có thể chỉ cần chọn ngoại lệ gốc có liên quan [nhưng đừng chọn lớp \Exception cơ sở nữa. ]

Phần lớn có xu hướng là một biến thể RuntimeException

13 ngoại lệ SPL - và khi nào thì sử dụng chúng

Ngoại lệ logic

Đây là lớp cha của khoảng một nửa số ngoại lệ SPL [RuntimeException là lớp cha của các lớp khác]

Nó được sử dụng khá phổ biến [mặc dù trong nhiều trường hợp bạn nên sử dụng một trong các lớp con của nó]. Sử dụng nó khi có lỗi trong logic chương trình

BadFunctionCallException

Ngoại lệ này không có xu hướng được sử dụng nhiều theo kinh nghiệm của tôi. Bạn nên ném nó nếu một cuộc gọi lại đề cập đến một chức năng không xác định hoặc nếu một số đối số bị thiếu

BadMethodCallException

Đây là một lớp con của BadFunctionCallException

Điều này tương tự với BadFunctionCallException, nhưng đối với các phương thức. Nó nên được sử dụng khi một phương thức của lớp không tồn tại, hoặc nó có các tham số sai [i. e. thiếu thông số]

Bạn sẽ thường thấy BadFunctionCallException bị ném vào phương thức __call[$method, $params] của một lớp nếu tự. phương thức $[] không tồn tại

Ngoại lệ tên miền

Nên sử dụng ngoại lệ này nếu một giá trị không tuân theo miền dữ liệu hợp lệ đã xác định

Nó thường được sử dụng để 'kiểm tra vệ sinh'. Ví dụ: nếu bạn đang cố gắng mô phỏng ném một con xúc xắc 6 mặt, thì nếu giá trị > 6, bạn có thể ném một DomainException [vì các giá trị phải luôn từ 1 đến 6]. Nó được sử dụng khá nhiều trong các lớp cơ sở dữ liệu của Laravel nếu bạn cố gắng thực hiện một số hành động mà trình điều khiển cơ sở dữ liệu không hỗ trợ [ví dụ: thực hiện doAdvisoryLock[] sẽ đưa ra một DomainException nếu kết nối của bạn đến cơ sở dữ liệu SQLite, vì SQLite không

Ngoại lệ đối số không hợp lệ

Đây là một ngoại lệ thường được sử dụng khác. Bạn thấy nó khi một đối số [chẳng hạn như phương thức hoặc tham số hàm] không hợp lệ

Ví dụ, nếu bạn mong đợi $input là một mảng, bạn có thể ném UnlimitedArgumentException nếu is_array[$input] != true

Độ dàiNgoại lệ

Ngoại lệ này được thiết kế để ném nếu độ dài không hợp lệ. Ví dụ: nếu độ dài chuỗi quá lớn hoặc quá nhỏ

Ví dụ: nếu bạn đang xử lý mã vạch ISBN-10 [luôn có độ dài 9 ký tự], nếu strlen[$input] != 9 thì bạn nên ném một ngoại lệ LengthException

OutOfBoundsNgoại lệ

OutOfBoundsException nên được ném ra nếu một giá trị không phải là khóa hợp lệ

Điều này thường được sử dụng khi cố gắng truy cập các mục trong một mảng không tồn tại hoặc độ lệch quá cao

Nó chỉ được sử dụng cho giá trị khóa không phải là chỉ mục [e. g. $array['some-key-that-does-not-exist']. ]

Nếu bạn đang xử lý một chỉ mục số nguyên nằm ngoài giới hạn thì bạn nên sử dụng ngoại lệ tiếp theo. OutOfRangeNgoại lệ

ngoại lệ thời gian chạy

Đây là lớp cha của khoảng một nửa số ngoại lệ SPL và nó sẽ bị loại bỏ nếu xảy ra lỗi chỉ có thể tìm thấy trong thời gian chạy

OutOfRangeNgoại lệ

Điều này tương tự như OutOfBoundsException nhưng nên được sử dụng cho các chỉ mục mảng [số nguyên] không hợp lệ

Tràn ngoại lệ

Nếu bạn có một lớp chứa, và bạn cố gắng thêm một phần tử vào nó nhưng nó đã đầy thì bạn nên ném một ngoại lệ OverflowException. Chúng cũng có thể được sử dụng trong các tình huống mà bạn có số lần thử lại tối đa và sau ngày /Exception0, bạn nên ném OverflowException

UnderflowException

Điều này ngược lại với OverflowException và được sử dụng khi xóa các phần tử trên vùng chứa trống

Nếu bạn có một lớp vùng chứa không có mục nào trong đó và mã của bạn cố xóa một mục thì bạn nên ném Ngoại lệ Underflow

Phạm viException

Điều này được sử dụng khi một giá trị không nằm trong một phạm vi giá trị cụ thể

Nó tương tự như DomainException nhưng lớp này mở rộng RuntimeException

UnexpectedValueException

Bạn nên đưa ra một UnexpectedValueException nếu một giá trị không khớp với một tập hợp các giá trị

Điều này thường xảy ra khi một hàm gọi một hàm khác và mong đợi giá trị trả về thuộc một loại hoặc giá trị nhất định không bao gồm các lỗi liên quan đến số học hoặc bộ đệm

Các ngoại lệ trong PHP là gì?

Một ngoại lệ là đối tượng mô tả lỗi hoặc hành vi không mong muốn của tập lệnh PHP . Các ngoại lệ được đưa ra bởi nhiều hàm và lớp PHP. Các hàm và lớp do người dùng định nghĩa cũng có thể đưa ra các ngoại lệ. Ngoại lệ là một cách hay để dừng một chức năng khi gặp dữ liệu mà nó không thể sử dụng.

3 loại ngoại lệ là gì?

Có ba loại ngoại lệ— ngoại lệ được kiểm tra, lỗi và ngoại lệ thời gian chạy .

Có bao nhiêu loại ngoại lệ trong PHP?

Lỗi PHP. 4 Các loại khác nhau [Cảnh báo, Phân tích cú pháp, Lỗi nghiêm trọng và Thông báo]

Điều nào sau đây là các loại ngoại lệ?

Có hai loại ngoại lệ chủ yếu trong Java như sau. .
Đã kiểm tra ngoại lệ
ngoại lệ không được kiểm tra

Chủ Đề