Hàm có ngoại lệ trong Python
Ngoại lệ rất tiện lợi để ném ra, bằng cách quy định chúng trong hàm thông qua các điều kiện.
Hãy tạo một hàm get_sum,
hàm này sẽ trả về tổng các phần tử
của danh sách chỉ khi độ dài danh sách nhỏ hơn
hoặc bằng 3. Trong trường hợp ngược lại,
hãy để nó ném ra ngoại lệ của chúng ta ToBigLength:
def get_sum(lst):
if len(lst) <= 3:
return sum(lst)
else:
raise ToBigLength
Bây giờ hãy truyền vào hàm get_sum
một danh sách và in kết quả hàm ra console:
lst = [1, 2, 3, 4]
print(get_sum(lst)) # sẽ in ra 6
Ngoài ra, trong các hàm cũng có thể đặt việc bắt
nhiều loại ngoại lệ. Hãy
tạo thêm một lớp ngoại lệ ToSmallLength:
class ToSmallLength(Exception):
pass
Bây giờ, hãy quy định trong hàm điều kiện: nếu
độ dài danh sách bằng 0, thì hãy để nó ném ra
ToSmallLength. Nếu không có ngoại lệ nào
được ném ra, thì hãy để nó trả về
tổng tất cả các phần tử của danh sách:
def get_sum(lst):
if len(lst) > 3:
raise ToBigLength
if len(lst) == 0:
raise ToSmallLength
else:
return sum(lst)
Để tiện lợi, có thể đặt danh sách sẽ
được truyền vào tham số hàm,
bản thân hàm và lời gọi của nó vào khối try.
Còn việc bắt hai ngoại lệ của chúng ta sẽ đặt
trong các khối except:
try:
lst = [1, 2, 3]
res = get_sum(lst)
print(res)
except ToBigLength:
print('error 1')
except ToSmallLength:
print('error 2')
Tạo một hàm nhận một số làm tham số.
Trong đó, hãy quy định các điều kiện:
nếu số đó âm và bằng 0, thì
hãy để nó ném ra các ngoại lệ tương ứng.
Trong trường hợp ngược lại, hãy để số đó
được nhân với 3.
Kiểm tra hoạt động của hàm bạn vừa tạo
bằng cách sử dụng cấu trúc try-except. Đồng thời
cũng hãy bắt các ngoại lệ của bạn.