Python xử lý lỗi thời gian chạy như thế nào?

Có một số loại lỗi trong Python giúp bạn gỡ lỗi mã của mình. Khi bạn chạy mã của mình, trước tiên Python sẽ kiểm tra mọi lỗi cú pháp rồi chạy mã. Các lỗi được ném khi mã được chạy được gọi là lỗi thời gian chạy. Trong hướng dẫn này, bạn sẽ tìm hiểu một số loại lỗi thời gian chạy khác nhau và cách khắc phục chúng

Runtimeerror trong Python là gì?

Lỗi thời gian chạy là một loại ngoại lệ python tích hợp được ném vào thời gian chạy. Có nhiều loại lỗi thời gian chạy khác nhau, chúng tôi sẽ đề cập đến chúng trong bài viết này. Một số ví dụ bao gồm lỗi loại và lỗi tên. Lỗi thời gian chạy thuộc nhóm ngoại lệ cụ thể lớn hơn trong Python

Điều gì gây ra lỗi thời gian chạy trong Python?

Có nhiều thứ có thể gây ra lỗi thời gian chạy tùy thuộc vào loại lỗi được đưa ra. Một số nguyên nhân phổ biến của lỗi thời gian chạy bao gồm

  • chia cho số không
  • sử dụng các loại không chính xác trong các hoạt động
  • lập chỉ mục vượt quá độ dài của danh sách
  • truy cập một khóa trong từ điển không tồn tại
  • sử dụng các biến chưa được xác định
  • cố gắng truy cập một tập tin không tồn tại

Làm cách nào để bạn xử lý lỗi thời gian chạy trong Python?

Cách bạn xử lý lỗi thời gian chạy tùy thuộc vào lỗi cụ thể đã xảy ra. Một khi cách để xử lý các lỗi thời gian chạy thường là sử dụng khối try/ngoại trừ. Bạn có thể chỉ định cách bạn muốn xử lý mã trong trường hợp có lỗi trong khối ngoại trừ, đây là một ví dụ

>>> y = 12 >>> x = 0 >>> try: .. z = y / x >>> except: ...print("An error occurred") ...z = 0

Bằng cách này, bạn được cảnh báo về lỗi mà không có ngoại lệ nào bị ném và dừng mã của bạn

Ví dụ về lỗi thời gian chạy là gì?

Chúng ta hãy xem một số ví dụ về các lỗi thời gian chạy phổ biến và cách khắc phục chúng

Lỗi phân chia số 0 được nâng lên

Một ZeroDivisionError được đưa ra khi bạn cố gắng chia hoặc modulo cho 0 trong mã của mình, chẳng hạn

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero

Chúng tôi có thể tránh điều này bằng cách thêm một kiểm tra để đảm bảo rằng số chúng tôi đang sửa đổi không phải là 0 trước khi chúng tôi thực hiện thao tác

>>> x = 0 >>> y = 2 >>> if (x != 0) and (y % x == 0): ...print(y, "is divisible by", x)

Loại lỗi

Một TypeError được đưa ra khi bạn cố gắng thực hiện một thao tác với các loại không chính xác. Ví dụ: nếu bạn cố nối một số nguyên và một chuỗi, bạn sẽ gặp lỗi loại

>>> x = "1" >>> y = 2 >>> z = x + y Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'

Lỗi cũng sẽ chỉ định thao tác nào đang gây ra lỗi và loại bạn đang cố sử dụng. Trong trường hợp này, chúng tôi có thể giải quyết lỗi này bằng cách chuyển tất cả các biến thành số nguyên để đảm bảo rằng chúng tôi chỉ thêm số nguyên

>>> x = "1" >>> y = 2 >>> z = int(x) + int(y) >>> print(x+y) 3

Một nguyên nhân phổ biến khác gây ra lỗi loại là cố lặp qua một loại không chính xác. Ví dụ: cố gắng lặp qua một số nguyên

>>> for i in 10: ...print(i) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not iterable

Trong trường hợp này, lỗi cho chúng tôi biết rằng chúng tôi đang cố gắng lặp qua một số nguyên, đây không phải là loại mà chúng tôi có thể lặp qua. Thay vào đó, chúng tôi muốn sử dụng vòng lặp for-range

>>> for i in range(10): ...print(i) 0 1 ...

Lỗi phím

Lỗi KeyError xuất hiện khi bạn đang cố truy cập một khóa trong từ điển không tồn tại. Ví dụ

>>> d = {1: ["a"], 2: ["b"]} >>> print(d[3]) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 3

Lỗi sẽ chỉ định khóa nào bạn đang cố truy cập không tồn tại. Bạn có thể khắc phục điều này bằng cách đảm bảo kiểm tra xem khóa có trong từ điển hay không trước khi thử truy cập khóa cụ thể đó. Bạn có thể kiểm tra xem một khóa có tồn tại trong từ điển hay không bằng cách sử dụng hàm in, hàm này trả về một giá trị boolean

________số 8

Lỗi chỉ mục

Lỗi chỉ mục là do lập chỉ mục vào danh sách có chỉ mục nằm ngoài giới hạn

>>> L = [1,2,3] >>> for i in range(10): ...print(L[i])

Chúng ta có thể khắc phục điều này bằng cách điều chỉnh vòng lặp for chỉ lặp trong phạm vi của danh sách hoặc thêm kiểm tra trước khi lập chỉ mục vào danh sách để đảm bảo chỉ mục nằm trong phạm vi

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 0

hoặc là

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 1

Tên Lỗi

Một NameError được đưa ra khi bạn cố gắng sử dụng một biến chưa được xác định. Ví dụ

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 2

Bạn có thể khắc phục điều này bằng cách xác định biến trước khi nó được sử dụng

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 3

Lỗi tên cũng có thể xảy ra nếu bạn cố gắng sử dụng một biến đã được xác định nhưng nằm ngoài phạm vi. Ví dụ: nếu bạn cố gắng sử dụng một biến cục bộ được xác định bên trong một hàm trên toàn cầu

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 4

Để khắc phục điều này, hãy đảm bảo rằng bạn chỉ đang cố truy cập các biến nằm trong phạm vi

Lỗi không tìm thấy tệp

Một FileNotFoundError được đưa ra khi bạn cố gắng truy cập một tệp không tồn tại trong thư mục bạn đã chỉ định

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 5

Có một số cách để giải quyết lỗi. Trước tiên, bạn nên kiểm tra để đảm bảo rằng tệp bạn đang cố truy cập nằm trong thư mục hiện tại của bạn. Nếu không, hãy đảm bảo chỉ định đường dẫn tệp đầy đủ khi cố gắng truy cập tệp đó, chẳng hạn

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 6

Làm cách nào để sửa lỗi giá trị trong Python?

Lỗi giá trị xảy ra do cung cấp cho hàm một đối số đúng loại, nhưng giá trị không chính xác. Ví dụ

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 7

Ở đây chúng tôi nhận được một lỗi vì toán học. hàm sqrt chỉ hoạt động với số nguyên dương hoặc số không. Chúng ta có thể ngăn lỗi này bằng cách đảm bảo rằng mọi thứ được truyền vào hàm đều lớn hơn hoặc bằng 0

Điều gì gây ra lỗi tràn?

Lỗi tràn là do một phép toán số học quá lớn để Python có thể biểu diễn

Ví dụ

>>> x = 0 >>> y = 2 >>> if y % x == 0: ...print(y, :is divisible by", x) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero 8

Bạn có thể ngăn lỗi tràn bằng cách đảm bảo rằng các số bạn chuyển vào các hàm không quá lớn

Tóm lược

Trong hướng dẫn này, bạn đã học được các lỗi thời gian chạy, thời điểm chúng xảy ra và nhiều cách để khắc phục chúng. Đầu tiên, bạn đã biết rằng lỗi thời gian chạy là một loại ngoại lệ được ném vào thời gian chạy. Tiếp theo, bạn đã tìm hiểu một số nguyên nhân phổ biến gây ra lỗi thời gian chạy như chia cho 0 và sử dụng các loại thao tác không chính xác. Sau đó, bạn đã học cách xử lý chung các lỗi thời gian chạy bằng cách sử dụng khối thử-ngoại trừ. Cuối cùng, bạn đã xem xét một số ví dụ về những thứ có thể gây ra lỗi thời gian chạy và cách giải quyết chúng, bao gồm một số lỗi ít phổ biến hơn như lỗi tràn và lỗi giá trị

Bước tiếp theo

Nếu bạn muốn tìm hiểu thêm về những kiến ​​thức cơ bản về Python, mã hóa và phát triển phần mềm, hãy xem Sách hướng dẫn những điều cơ bản về mã hóa dành cho nhà phát triển của chúng tôi, nơi chúng tôi đề cập đến các ngôn ngữ, khái niệm và công cụ thiết yếu mà bạn sẽ cần để trở thành một nhà phát triển chuyên nghiệp

Cảm ơn và mã hóa hạnh phúc. Chúng tôi hy vọng bạn thích bài viết này. Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, vui lòng liên hệ với jacob@initialcommit. io

Python xử lý lỗi mã hóa như thế nào?

Để xử lý ngoại lệ, chúng ta phải đặt mã, result = tử số/mẫu số bên trong khối thử . Bây giờ khi một ngoại lệ xảy ra, phần còn lại của mã bên trong khối thử sẽ bị bỏ qua. Khối ngoại trừ bắt ngoại lệ và các câu lệnh bên trong khối ngoại trừ được thực thi.

Python có lỗi thời gian chạy không?

Xảy ra lỗi cú pháp khi Python không hiểu bạn đang nói gì. Lỗi thời gian chạy xảy ra khi Python hiểu những gì bạn đang nói nhưng gặp sự cố khi làm theo hướng dẫn của bạn .

Chủ đề