Chặn các loại ngoại lệ khác nhau trong Python
Trong cùng một đoạn mã, có thể cần phải chặn các loại ngoại lệ khác nhau.
Giả sử chúng ta cần chặn ngoại lệ khi chia cho zero. Với lỗi kiểu này, ngoại lệ xuất hiện là:
ZeroDivisionError: division by zero
Để chặn nó, tên ngoại lệ nên
được viết trong khối except:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Đồng thời, giả sử chúng ta có một danh sách:
lst = [1, 2, 3]
Nếu đặt trong khối try một đoạn mã có khả năng
lỗi khác, ví dụ, in ra một phần tử không tồn tại, thì ngoại lệ đó,
không được chặn trong khối except, sẽ đi tiếp
và in ra console. Vì điều đó
mà công việc của mã sẽ dừng lại:
lst = [1, 2, 3]
try:
print(lst[4]) # sẽ ra IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Để giải quyết tình huống như vậy, cần chỉ định trong mỗi khối tên tương ứng của loại ngoại lệ. Hãy thêm vào mã của chúng ta ngoại lệ cho phần tử thiếu:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Cho đoạn mã sau:
txt = '2'
res1 = txt + 3
res2 = txt1
Hãy viết mã để chặn các ngoại lệ được thể hiện
trong các biến res1 và res2.