Ngoại lệ thoát python sys

Bất kỳ ngôn ngữ lập trình ngôn ngữ nào cũng có phần xử lý lỗi ngoại lệ ngoại lệ, nó không chỉ giúp ta gỡ lỗi mà còn giúp chúng ta tắt các thông báo lỗi không mong muốn của màn hình nền khi nó ở chế độ sản xuất

1, Ngoại lệ trong Python

Giả sử mình có một hàm

print[sum[6,2]]
#kết quả: 3
4 như sau

def sum[a, b]:
    return a / b

Bây giờ mình sẽ gọi nó như thường

print[sum[6,2]]
#kết quả: 3

Nhưng trong trường hợp tham số thứ 2 bây giờ không phải bằng 2 nữa mà là bằng 0 thì sao nhỉ

print[sum[6, 0]]

Và đây là kết quả mình thu được

  File ".\main.py", line 3, in 
    print[sum[6, 0]]
  File ".\main.py", line 2, in sum
    return a / b
ZeroDivisionError: division by zero

Như các bạn đã thấy, chương trình đã báo lỗi là không thể thực hiện được phép chia cho 0. Và trong trường hợp này thì các bạn có thể hạn chế lỗi bằng cách ràng buộc tham số b sao cho nó khác 0 -> cách này ai cũng biết rồi

Nhưng ở phạm vi vị trí bài viết này mình muốn hướng dẫn mọi người một cách nữa đó là sử dụng ngoại lệ

Để sử dụng ngoại lệ trong Python, các bạn hãy sử dụng lệnh

print[sum[6,2]]
#kết quả: 3
5 theo cú pháp sau

try:
    # code
except exceptionName:
    # code

in which.  

  • print[sum[6,2]]
    #kết quả: 3
    6 là tên của các ngoại lệ mà bạn muốn bắt và xử lý [xem các ngoại lệ ở phần 2]

Nếu khối lệnh trong

print[sum[6,2]]
#kết quả: 3
7 có 1 lỗi xảy ra thì chương trình sẽ tìm đến các lệnh ngoại trừ phía bên dưới và nếu một lệnh ngoại trừ bất kỳ yêu cầu nào thì nó sẽ thực thi mã trong khối lệnh ngoại trừ đó

VD. Mình sẽ hạn chế bắt lỗi của ví dụ trên bằng ngoại lệ

Như các bạn đã thấy ở dòng báo lỗi trong ví dụ trên nó có đoạn 

print[sum[6,2]]
#kết quả: 3
8 thì ở đây nếu như chúng ta không biết hết các ngoại lệ trong Python thì có thể dựa vào dòng báo lỗi đó và bắt theo, trong trường hợp này ngoại lệ được gọi

def sum[a, b]:
    return a / b
0

Và đối với mỗi khối lệnh

print[sum[6,2]]
#kết quả: 3
9 thì bạn cũng có thể bắt nhiều phần mở rộng trên một lần khai báo. Bằng cách đặt các ngoại lệ cách nhau bởi một dấu hiệu
print[sum[6, 0]]
0

VD. Bắt nhiều ngoại lệ trên một lần khai báo

def sum[a, b]:
    return a / b
3

Hoặc bạn cũng có thể khai báo nhiều thông báo ngoại trừ trong một khối lệnh

print[sum[6,2]]
#kết quả: 3
5

VD. Bắt nhiều ngoại lệ

def sum[a, b]:
    return a / b
5

Đương nhiên, bạn cũng có thể lồng các khối

print[sum[6,2]]
#kết quả: 3
5 lại với nhau

VD

def sum[a, b]:
    return a / b
7

2, Cuối cùng

Nếu như trong khối lệnh

print[sum[6,2]]
#kết quả: 3
5 bạn muốn có 1 đoạn lệnh chắc chắn sẽ được thực thi cho dù thử đúng hay sai, thì bạn sẽ phải khai báo thêm khối lệnh
print[sum[6, 0]]
4 vào cuối khối lệnh
print[sum[6,2]]
#kết quả: 3
5 theo cú pháp sau

print[sum[6,2]]
#kết quả: 3
1

Cuối cùng, trong Python thường được sử dụng để xóa dữ liệu trong quá trình tạo ra

print[sum[6,2]]
#kết quả: 3
5

VD

print[sum[6,2]]
#kết quả: 3
0

3, Các ngoại lệ có sẵn trong Python

Dưới đây là danh sách các ngoại lệ mặc định trong Python

Tên ngoại lệ Chú thích Ngoại lệ Đây là lớp cơ sở cho tất cả các ngoại lệ, nó sẽ xuất hiện khi có bất kỳ lỗi nào xảy ra. StopIteration Xuất hiện khi phương thức next[] của phép lặp không trỏ đến bất kỳ đối tượng nào. SystemExitXuất hiện khi sử dụng phương thức sys. exit[]StandardErrorLớp cơ sở cho tất cả các ngoại lệ. ArithmeticErrorXuất hiện khi có lỗi tính toán giữa các tham số với nhauOverflowErrorXuất hiện khi thực hiện tính toán và giá trị của nó vượt ngưỡng giới hạn cho phép của kiểu dữ liệu. FloatingPointErrorXuất hiện khi tính toán float thất bại. ZeroDivisonErrorXuất hiện khi thực hiện cho phép chia cho 0. AssertionErrorXuất hiện trong trường hợp lệnh xác nhận thất bại. AttributeErrorXuất hiện khi không tồn tại thuộc tính này hoặc thiếu tham số truyền vào nó. EOFErrorXuất hiện khi không có dữ liệu từ hàm input[] hoặc tệp cuối. ImportErrorXuất hiện khi lệnh nhập thất bại. KeyboardInterruptXuất hiện khi ngắt biên dịch. LookupErrorLớp cơ sở cho tất cả các lỗi về tra cứu. IndexErrorXuất hiện khi chỉ mục không tồn tại trong danh sách, chuỗi,. KeyErrorXuất hiện khi khóa không tồn tại trong từ điển. NameErrorXuất hiện khi một biến không tồn tại trong phạm vi bạn gọi nó. EnvironmentErrorXuất hiện khi có bất kỳ lỗi nào nằm ngoài phạm vi của Python. IOErrorXuất hiện khi xử lý đầu vào/đầu ra không thành công hoặc mở tệp không thành công. OSErrorXuất hiện khi có lỗi từ hệ điều hành. SyntaxErrorXuất hiện khi chương trình gặp lỗi cú pháp. IndentationErrorXuất hiện khi bạn nhận sai dòng. SystemErrorXuất hiện khi biên dịch có vấn đề nhưng nó lại không thoát tự động. SystemExitXuất hiện khi biên dịch biên dịch bị dừng bởi
print[sum[6, 0]]
7. TypeErrorXuất hiện khi thực thi toán tử hoặc hàm mà kiểu dữ liệu bị sai so với kiểu dữ liệu đã được định nghĩa ban đầu. ValueErrorXuất hiện khi chúng ta xây dựng 1 hàm mà kiểu dữ liệu đúng nhưng khi chúng ta thiết lập ở tham số là khác so với khi truyền vào. RuntimeErrorXuất hiện khi lỗi được sinh ra không thuộc bất kỳ danh mục nào. NotImplementedErrorXuất hiện khi một phương thức đối tượng cần được thực hiện trong Lớp kế thừa chứ không phải là Lớp thực thiUnboundLocalErrorXuất hiện khi chúng ta cố tình truy cập vào một biến trong hàm hoặc phương thức, nhưng không thiết lập giá trị cho nó

4, Xây dựng một ngoại lệ riêng

Do mình chưa giới thiệu với mọi người kiến ​​thức hướng đối tượng trong Python, nên phần này những ai biết hướng đối tượng rồi thì xem, còn không thì khi khác xem lại cũng được. D

Để tạo một ngoại lệ trong Python, thì bắt buộc ngoại lệ này phải kế thừa lớp Ngoại lệ trong Python, và còn lại là bạn muốn xử lý như thế nào cũng được

VD. Mình sẽ viết một Exception có tên ngoại lệDemo

print[sum[6,2]]
#kết quả: 3
1

Sau khi đã tạo ra ngoại lệ cho riêng mình rồi, thì khi thực hiện mà bạn muốn gọi ra ngoại lệ ra bạn chỉ cần sử dụng từ khóa

print[sum[6, 0]]
8 theo cú pháp sau

print[sum[6,2]]
#kết quả: 3
2

Trong đó,

print[sum[6,2]]
#kết quả: 3
6 là tên của ngoại lệ bạn muốn gọi

VD

print[sum[6,2]]
#kết quả: 3
3

5, Lời kết

Phần này hơi dài, nhưng các bạn hay làm ở tầm xa của ứng dụng thì cũng không cần quan tâm lắm, vì các framework đã hỗ trợ chúng ta phần này khá ổn rồi.

Chủ Đề