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ố âmCó 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ờiVà đô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 độngNgoà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}"]
0Thay 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 ứngTrướ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ấpNgoà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
1Trong 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
3Tươ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
7Trong 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
1Sử dụng if isinstance[number, float]:
raise TypeError[f"Only integers are accepted: {number}"]
6 để ném ngoại lệ trong Python
if isinstance[number, float]:
raise TypeError[f"Only integers are accepted: {number}"]
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