try catch trong Python


Ta xem ví dụ hôm trước:

age  = input("What is your age ? ")

next_year = int(age) + 1
print("Next year, you are " + str(next_year))

# What is your age ? 35
# Next year, you are 36

Ta thấy khi chạy chương trình này ta nhập vào input giá trị số 35 thì chương trình chạy ok. Nhưng nếu ta nhập vào chuỗi thì sẽ bị báo lỗi tại dòng next_year = int(age) + 1.

What is your age ? duy
Traceback (most recent call last):
  File "/Users/duytran/code/python/python_tutorials/basic_python/try_catch.py", line 3, in <module>
    next_year = int(age) + 1
ValueError: invalid literal for int() with base 10: 'duy'

Process finished with exit code 1

Lỗi này xảy ra vì không thể chuyển chuỗi 'duy' sang kiểu int được. Và lỗi là "ValueError". Vậy Ta sẽ dùng try...catch để bắt lỗi này.

try:
    next_year = int(age) + 1
    print("Next year, you are " + str(next_year))
except ValueError:
    print("Invalid Age")
    
# What is your age ? Duy
# Invalid Age

Chương trình sẽ thực thi trong try nếu không có lỗi. Nếu có lỗi sẽ không thực thi try mà thực thi except. Nếu ta không chắc là lỗi "ValueError" hay gì thì ta có thể viết như sau:

age  = input("What is your age ? ")

try:
    next_year = int(age) + 1
    print("Next year, you are " + str(next_year))
except:
    print("Invalid Age")

Lúc này bất cứ lỗi gì thì sẽ thực thi code trong except. Như vậy ta đã tìm hiểu xong try catch trong Python rồi nhé. Super easy phải không nào (+_+)