Làm thế nào để bạn đưa ra một ngoại lệ trong python?

Khi chúng ta chuyển một số âm cho hàm

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7, nó sẽ chuyển số âm đó vào hàm
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
0, điều này làm phát sinh ngoại lệ
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error

Hàm

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
2 trong mô-đun
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
3 của Python đưa ra một ngoại lệ khi nó được cung cấp một số âm

Có thể có một số trường hợp mà

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7 nên đưa ra một ngoại lệ nhưng không phải lúc này. Ví dụ: nếu chúng ta chuyển một số dấu phẩy động cho hàm
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7, nó sẽ trả về một câu trả lời

Và đôi khi nó trả về một câu trả lời thực sự kỳ lạ

Thật vô nghĩa khi hỏi một số không phải là số nguyên liệu nó có phải là số nguyên tố hay không, vì vậy hàm

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7 của chúng ta có thể sẽ đưa ra một ngoại lệ khi được cung cấp một số dấu phẩy động

Ngoài ra, nếu chúng tôi chuyển vào

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7 hoặc
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
8 đến
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7, nó sẽ trả về
    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
0

Thay vào đó, nó có thể trả về

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
1 hoặc đưa ra một ngoại lệ [tùy thuộc vào cách chúng tôi muốn triển khai
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7]

Đưa ra một ngoại lệ khi một điều kiện cụ thể được đáp ứng

Chúng tôi có thể sửa đổi chức năng

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7 của mình để kiểm tra hai điều kiện này, đưa ra một ngoại lệ nếu một trong những điều kiện đó được đáp ứng

Trước tiên, chúng tôi sẽ hỏi liệu số đã cho có phải là một thể hiện của lớp

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
4 hay không và chúng tôi sẽ đưa ra một ngoại lệ
    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
5 nếu nó là

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]

Chúng tôi đang sử dụng câu lệnh

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
6 của Python và chuyển vào một đối tượng ngoại lệ
    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
5. Chúng tôi đang sử dụng
    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
5 vì loại sai đã được cung cấp

Ngoài ra, nếu số đã cho nhỏ hơn

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
9, chúng tôi sẽ nói rằng đây không phải là giá trị hợp lệ, vì vậy chúng tôi sẽ đưa ra một ngoại lệ
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1. Thông báo cho ngoại lệ
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1 của chúng tôi sẽ tuyên bố rằng chỉ những số nguyên trên
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
8 mới được chấp nhận

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
9

Đây là một hàm

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7 được cập nhật với cả hai điều kiện đó và câu lệnh
    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
6

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1

Trong cả hai trường hợp này, thông báo lỗi chúng tôi cung cấp cho đối tượng ngoại lệ của mình hiển thị số chúng tôi đã cung cấp, điều này sẽ làm cho thông báo lỗi của chúng tôi hữu ích nhất có thể khi chúng tôi gỡ lỗi mã của mình

Ồ, khi chúng ta gọi hàm

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7 với một số dấu phẩy động, nó sẽ tạo ra một ngoại lệ
    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
5 cho biết chỉ các số nguyên mới được chấp nhận

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
3

Tương tự, nếu chúng ta gọi

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7 bằng
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
8 hoặc
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7, nó sẽ tạo ra một ngoại lệ
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
7

Trong cả hai trường hợp, dấu vết mà Python in ra hiển thị thông báo lỗi thân thiện mà chúng tôi đã cung cấp cho các đối tượng ngoại lệ của mình

Python có các ngoại lệ tích hợp

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
5 và
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1 đến từ đâu?

Nếu bạn xem phần trợ giúp về mô-đun

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
13 trong Python hoặc nếu bạn xem tài liệu về các trường hợp ngoại lệ, bạn sẽ thấy hệ thống phân cấp ngoại lệ

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
5 và
>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1 chỉ là hai trong số nhiều ngoại lệ được tích hợp sẵn trong Python. Có hàng tá ngoại lệ được tích hợp trong Python. Chúng tôi không phải nhập bất cứ thứ gì để sử dụng các ngoại lệ này;

Chúng tôi có thể xác định các loại ngoại lệ tùy chỉnh của riêng mình bằng cách kế thừa từ một lớp ngoại lệ khác, nhưng hơi bất thường khi làm như vậy. Trừ khi bạn thực sự cần phân biệt các ngoại lệ của mình với các ngoại lệ được tích hợp sẵn trong Python, có thể bạn sẽ không thường xuyên tạo các ngoại lệ tùy chỉnh

Loại ngoại lệ phổ biến nhất mà tôi đưa ra trong mã của mình là ngoại lệ

>>> is_prime[-2]
Traceback [most recent call last]:
  File "", line 1, in 
  File "/home/trey/is_prime.py", line 5, in is_prime
    for candidate in range[2, int[sqrt[number]]+1]:
ValueError: math domain error
1

Sử dụng
    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
6 để ném ngoại lệ trong Python

Nếu bạn có một điều kiện cụ thể trong chức năng của mình mà chương trình của bạn sẽ bị sập lớn [nếu/khi điều kiện đó được đáp ứng], bạn có thể đưa ra một ngoại lệ bằng cách sử dụng câu lệnh

    if isinstance[number, float]:
        raise TypeError[f"Only integers are accepted: {number}"]
6 và cung cấp một đối tượng ngoại lệ để đưa ra

Một ngoại lệ nâng cao trong Python với ví dụ là gì?

Lỗi có hai dạng. lỗi cú pháp và ngoại lệ. Mặc dù lỗi cú pháp xảy ra khi Python không thể phân tích cú pháp một dòng mã, nhưng việc đưa ra các ngoại lệ cho phép chúng tôi phân biệt giữa các sự kiện thông thường và sự kiện ngoại lệ, chẳng hạn như lỗi [e. g. chia cho 0] hoặc điều gì đó mà bạn có thể không muốn xử lý .

Tại sao bạn lại đưa ra một ngoại lệ trong Python?

Đôi khi bạn muốn Python đưa ra một ngoại lệ tùy chỉnh để xử lý lỗi . Bạn có thể làm điều này bằng cách kiểm tra một điều kiện và đưa ra ngoại lệ, nếu điều kiện là True. Ngoại lệ được nêu ra thường cảnh báo người dùng hoặc ứng dụng gọi điện.

tăng ngoại lệ là gì?

Đưa ra một ngoại lệ là một kỹ thuật làm gián đoạn luồng thực thi thông thường trong một chương trình, báo hiệu rằng một số trường hợp ngoại lệ đã phát sinh và quay lại trực tiếp một phần kèm theo của chương trình được chỉ định để phản ứng với trường hợp đó

Chủ Đề