Hướng dẫn python if try except - python nếu thử ngoại trừ



Nội dung chính

  • Exception là gì?
  • Xử lý ngoại lệ trong Python
  • Mệnh đề except mà không xác định Exception trong Python
  • Mệnh đề except với nhiều exception trong Python
  • Khối try-finally trong Python
  • Tham số của một Exception trong Python
  • Tạo một Exception trong Python
  • Custom Exception trong Python

Exception là gì?

Ngoại lệ có thể là bất kỳ điều kiện bất thường nào trong chương trình mà phá vỡ luồng thực thi chương trình đó. Bất cứ khi nào một ngoại lệ xuất hiện, mà không được xử lý, thì chương trình ngừng thực thi và vì thế code không được thực thi.

Python đã định nghĩa sẵn rất nhiều ngoại lệ, mà đã được trình bày trong chương Standard Exception. Trong chương này chúng ta sẽ tìm hiểu cách xử lý ngoại lệ cũng như cách tạo các Custom Exception như thế nào.


Nếu bạn thấy bất cứ code nào là khả nghi (có thể gây ra ngoại lệ) thì bạn có thể phòng thủ chương trình của mình bằng cách đặt các khối code khả nghi này trong một khối try. Khối try này được theo sau bởi lệnh except. Sau đó, nó được theo sau bởi các lệnh mà xử lý vấn đề đó.

Cú pháp:

Dưới đây là cú pháp của khối try....except...else trong Python:

try:
   Ban thuc hien cac hoat dong cua minh tai day;
   Va day la phan code co the tao exception;
   ......................
except ExceptionI:
   Neu co ExceptionI, thi thuc thi khoi code nay
except ExceptionII:
   Neu co ExceptionII, thi thuc thi khoi code nay
   ......................
else:
   Neu khong co exception nao thi thuc thi khoi code nay 

Dưới đây là một số điểm bạn cần lưu ý:

  • Phần code khả nghi mà có khả năng tạo exception cần được bao quanh trong khối try.

  • Khối try được theo sau bởi lệnh except. Có thể có một hoặc nhiều lệnh except với một khối try đơn.

  • Lệnh except xác định exception mà xảy ra. Trong trường hợp mà exception đó xảy ra, thì lệnh tương ứng được thực thi.

  • Ở cuối khối try, bạn có thể cung cấp lệnh else. Nó được thực thi khi không có exception nào xảy ra. Khối else là địa điểm tốt cho code mà không cần sự bảo vệ của khối try.

Ví dụ:

Ví dụ sau mở một file, ghi nội dung vào file này và sau đó đóng file, tất cả hoạt động đều thành công:

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()

Kết quả là:

Output:

Thanh cong ghi noi dung vao file

Ví dụ:

Ví dụ sau mở một file, ghi nội dung vào file này và sau đó đóng file, tất cả hoạt động đều thành công:

 try:
   fh = open("testfile", "r")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"

Kết quả là:

Output:

Error: Khong tim thay file


Ví dụ sau mở một file để ghi trong khi bạn không có quyền ghi, do đó nó sẽ tạo một exception:

Mệnh đề except mà không xác định Exception trong Python

Cú pháp:

try:
   Ban thuc hien cac hoat dong cua minh tai day;
   Va day la phan code co the tao exception;
   ......................
except:
   Neu co bat ky exception nao, thi thuc thi khoi code nay
   ......................
else:
   Neu khong co exception nao, thi thuc thi khoi code nay 




Dưới đây là cú pháp của khối try....except...else trong Python:

Dưới đây là một số điểm bạn cần lưu ý:

try:
   Ban thuc hien cac hoat dong cua minh tai day;
   Va day la phan code co the tao exception;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   Neu co bat ky exeption nao trong danh sach, 
   thi thuc thi khoi code nay
   ......................
else:
   Neu khong co exception nao, thi thuc thi khoi code nay 



Phần code khả nghi mà có khả năng tạo exception cần được bao quanh trong khối try.

Khối try được theo sau bởi lệnh except. Có thể có một hoặc nhiều lệnh except với một khối try đơn.

try:
   Ban thuc hien cac hoat dong cua minh tai day;
   Va day la phan code co the tao exception;
   ......................
   Do co exeption nen khoi nay bi bo qua
finally:
   Khoi nay nen duoc thuc thi
   ......................

Lệnh except xác định exception mà xảy ra. Trong trường hợp mà exception đó xảy ra, thì lệnh tương ứng được thực thi.: Bạn có thể cung cấp một hoặc nhiều mệnh đề except, hoặc một mệnh đề finally, nhưng không được cung cấp cả hai. Ngoài ra bạn cũng không thể sử dụng mệnh đề else với một mệnh đề finally.

Ví dụ:

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
finally:
   print "Error: Khong tim thay file"

Ví dụ sau mở một file, ghi nội dung vào file này và sau đó đóng file, tất cả hoạt động đều thành công:

Error: Khong tim thay file

Kết quả là:

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()
0

Output:



Ví dụ sau mở một file để ghi trong khi bạn không có quyền ghi, do đó nó sẽ tạo một exception:

Mệnh đề except mà không xác định Exception trong Python

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()
1

Lệnh except cũng có thể được sử dụng mà không xác định exception nào. Lệnh try-except này bắt tất cả exception mà xuất hiện. Sử dụng loại lệnh try-except này không phải là sự thực hành lập trình tốt, bởi vì nó bắt tất cả exception nhưng không làm cho lập trình viên biết được căn nguyên của vấn đề làm xuất hiện exception đó.

Ví dụ:

Ví dụ sau mở một file, ghi nội dung vào file này và sau đó đóng file, tất cả hoạt động đều thành công:

Kết quả là:


Output:

Ví dụ sau mở một file để ghi trong khi bạn không có quyền ghi, do đó nó sẽ tạo một exception:

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()
3

Mệnh đề except mà không xác định Exception trong Python

Ví dụ:

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()
4

Ví dụ sau mở một file, ghi nội dung vào file này và sau đó đóng file, tất cả hoạt động đều thành công:

Kết quả là:

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()
5


Output:

Ví dụ sau mở một file để ghi trong khi bạn không có quyền ghi, do đó nó sẽ tạo một exception:

Ví dụ dưới đây liên quan tới RuntimeError. Ở đây, một lớp đã tạo là lớp con của của RuntimeError. Trong khối try, exception được định nghĩa bởi người dùng được tạo và được bắt trong khối except. Biến e được sử dụng để tạo một instance của lớp Networkerror.

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()
6

Sau khi định nghĩa lớp trên, bạn có thể tạo exception như sau:

 try:
   fh = open("testfile", "w")
   fh.write("Day la mot kiem tra nho ve xu ly ngoai le!!")
except IOError:
   print "Error: Khong tim thay file"
else:
   print "Thanh cong ghi noi dung vao file"
   fh.close()
7