Hướng dẫn eoferror trong python

Hướng dẫn eoferror trong python

Đã đăng vào thg 3 30, 2018 3:44 CH 3 phút đọc

Overview

Trong python cũng như tất các các ngôn ngữ lập trình khác, những trường hợp ngoại lệ luôn có thể xảy ra gây ra lỗi. Với các lỗi nhỏ không ảnh hưởng đến performance của app có thể chúng ta không để ý nhưng đôi khi xuất hiện một số lỗi có thể gây ra crash hoặc khiến server downtime. Trong bài này chúng ta sẽ đi tìm hiều cách mà Python xử lý khi có lỗi xảy ra.

What is an Exception?

Exception là một lỗi xảy ra trong quá trình thực thi một chương trình. Khi nó xảy ra, Python tạo ra một exception để xử lý vấn đề đó tránh cho ứng dụng hay server của bạn bị crash.

Why use Exceptions ?

Exceptions là một phương thức hết sức đơn giản để các bạn có thể handle những lỗi có thể xảy ra trong code của bạn. Khi bạn nghĩ đoạn code của bạn có thể gây ra lỗi bạn có thể sử dụng exceptions để detect và handle chúng.

Exception Errors

Dưới đây là một số exception phổ biến trong Python: IOError Thường thì lỗi này liên quan đến tệp tin của bạn, có thể nó đã bị lỗi và không thể nào mở được.

ImportError Lỗi này thường gặp khi python không thể nào tìm thấy module khi bạn thực hiện import chúng.

ValueError Lỗi này xảy ra khi bạn truyền giá trị vào một function với đúng kiểu dữ liệu nhưng giá trị của nó lại không thích hợp.

Exception Errors Examples

Để in ra chi tiết một số lỗi cơ bản trong python các bạn có thể làm như sau: Lấy một số ví dụ:

except IOError:
    print('An error occurred trying to read the file.')

except ValueError:
    print('Non-numeric data found in the file.')

except ImportError:
    print "NO module found"

except EOFError:
    print('Why did you do an EOF on me?')

except KeyboardInterrupt:
    print('You cancelled the operation.')

except:
    print('An error occurred.')

Set up exception handling blocks

Để sử dụng exception handling in Python, đầu tiên bạn cần phải làm sao detect được các ngoại lệ có thể phát sinh trong đoạn code của bạn. Trong python bạn có thể sử dụng từ khoá "try" và "except" để bắt toàn bộ ngoại lệ có thể xảy ra trong một khối code của bạn.

Khối lệnh năm giữa "try" và "except" nếu xảy ra lỗi nó sẽ gọi ra trong block except tại đây chúng ta sẽ handle nó. Ví dụ:

try:
    some statements here
except:
    exception handling

Hoặc đơn giản nhất bạn có thể test như sau :3

try:
    print 1/0

except ZeroDivisionError:
    print "You can't divide by zero, you're silly."

How does it work?

Việc xử lý lỗi được thực hiện thông qua việc sử dụng exceptions, Nó được thực thi trong try block và nếu bất có bất kỳ lỗi nào xảy ra nó sẽ được handle trong except block.

In addition to using an except block after the try block, you can also use the finally block. Ngoài ra ngoài việc sử dụng try để detect exception và xử lý chúng trong except thì bạn cũng thể xử dụng một block khác mà python cung cấp cho bạn đó là finally.

Đoạn code trong finally sẽ được thực thi bất kể khi có exception xảy ra.

mport sys

print "Lets fix the previous code with exception handling"
try:
    number = int(raw_input("Enter a number between 1 - 10 "))

except ValueError:
    print "Err.. numbers only"
    sys.exit()

print "you entered number ", number

Try ... finally clause

Finally là không bắt buộc. Nó được thêm vào với mục đích thực hiện một số tác vụ bất kể trong trường hợp có ngoại lệ xả ra.

try:
    raise KeyboardInterrupt
finally:
    print 'Goodbye, world!'
...

Trong bài mình có đưa ra một số các cơ bản để handle các ngoại lệ có thể xảy ra trong quá trình phát triển phần mềm sử dụng ngôn ngữ python. Mong rằng nó giúp ích được các bạn.

All rights reserved

Hàm try() được sử dụng trong việc xử lý lỗi và ngoại lệ trong Python

Có hai kiểu lỗi:

– Syntax Error: Còn được gọi là Parsing Errors (lỗi phân tích cú pháp), là loại lỗi cơ bản nhất, được đưa ra khi Python parser (trình phân tích cú pháp của Python) không thể hiểu được một dòng code cụ thể nào đó.

– Exception: Là những lỗi mà được phát hiện trong khi chương trình đang thực thi, ví dụ như lỗi ZeroDivisionError – Lỗi chia cho 0.

Danh sách các Exception Errors – các lỗi ngoại lệ:

– IOError: Nếu file không thể được mở ra

– KeyboardInterrupt: Khi người dùng nhấn vào một phím không được yêu cầu

– ValueError: Khi built-in function (hàm được tích hợp sẵn  trong Python) nhận được một đối số sai (wrong argument)

– EOFError: Nếu đọc được ký tự End-Of-File (tức là ký tự kết thúc file) mà trước đó không đọc được bất cứ dữ liệu nào.

– ImportError: Nếu không thể tìm được module đang được import vào chương trình.

Tiếp theo, chúng ta sẽ tìm hiểu về cách để xử lý các lỗi này bên trong code Python của mình. Ở đây, chúng ta sẽ cần tới cặp câu lệnh try-except.

Cú pháp cơ bản:

Basic Syntax : 
 try:
    // Code
 except:
    // Code

Hàm try() hoạt động như thế nào?

– Đầu tiên, câu lệnh try đầu tiên sẽ được thực thi, tức là phần code nằm giữa mệnh đề try và mệnh đề except sẽ được thực thi đầu tiên.

– Nếu không có ngoại lệ nào được đưa ra, thì chỉ có mệnh đề try sẽ chạy, còn mệnh đề except sẽ không chạy mà đi vào trạng thái finished (đã hoàn thành) luôn.

– Nếu có bất kỳ ngoại lệ nào xuất hiện, mệnh đề try sẽ được bỏ qua, và mệnh đề except sẽ chạy.

– Nếu có bất kỳ ngoại lệ nào xuất hiện, nhưng mệnh đề except bên trong code không xử lý nó, thì nó sẽ được truyền lại lên trên cho mệnh đề try ở bên ngoài. Nếu ngoại lệ vẫn không được xử lý, thì chương trình sẽ dừng thực thi.

– Một câu lệnh try có thể đi kèm với nhiều hơn một mệnh đề except.

Ví dụ 1: Không có ngoại lệ xuất hiện, mệnh đề try sẽ chạy

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: 
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# Python code to illustrate 
# working of try()  
def divide(x, y): 
    try: 
        # Floor Division : Gives only Fractional Part as Answer 
        result = x // y 
        print("Yeah ! Your answer is :", result) 
    except ZeroDivisionError: 
        print("Sorry ! You are dividing by zero ") 
  
# Look at parameters and note the working of Program 
divide(3, 2) 

– Kết quả in ra là:

('Yeah ! Your answer is :', 1)

Ví dụ 2: Có một ngoại lệ, vì vậy chỉ có mệnh đề except sẽ chạy


# Python code to illustrate 
# working of try()  
def divide(x, y): 
    try: 
        # Floor Division : Gives only Fractional Part as Answer 
        result = x // y 
        print("Yeah ! Your answer is :", result) 
    except ZeroDivisionError: 
        print("Sorry ! You are dividing by zero ") 
  
# Look at parameters and note the working of Program 
divide(3, 0) 

– Kết quả in ra là:

Sorry ! You are dividing by zero

Nguồn và Tài liệu tiếng anh tham khảo:

  • w3school
  • python.org
  • geeksforgeeks

Tài liệu từ cafedev:

  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Ebook về python tại đây.
  • Các series tự học lập trình khác

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!