Nhật ký toán học python

Biến lỗi rất phổ biến trong lập trình. Trong Python, chúng tôi sử dụng thuật ngữ “ngoại lệ” cho các lỗi xảy ra trong quá trình thực thi mã. Có thể là lỗi đánh máy, mã hóa mất tệp trung hoặc mã đạt đến trạng thái không hợp lệ, đó là điều không thể tránh khỏi. bạn càng viết nhiều chương trình Python, bạn càng phải đối mặt và xử lý các ngoại lệ Python nhiều hơn

Việc xử lý ngoại lệ trong Python không nghe có vẻ khó khăn hoặc bí truyền, nhưng nó là nền tảng cho lộ trình học Python của bạn. Bằng cách dự đoán chính xác sự cố tiềm ẩn và xử lý các trường hợp ngoại lệ, chúng tôi có thể giải quyết sự cố và ngăn không cho mã bị lỗi – trong khi vẫn giữ cho người dùng hài lòng và được cung cấp đầy đủ . Khả năng xử lý đúng các ngoại lệ Python sẽ giúp mã của bạn trở nên đáng tin cậy và dễ hiểu hơn về lâu dài

Trong bài viết này, chúng ta sẽ khám phá các ngoại lệ Python là gì, cách chúng ta có thể xử lý chúng và cách tận dụng chúng bằng cách tạo ra các ngoại lệ của riêng mình và sử dụng chúng để giữ mã của chúng ta.

Có gì trong Python ngoại lệ?

Trong Python, chúng tôi nói rằng các ngoại lệ được đưa ra khi một thao tác không hợp lệ được thực hiện, giả như cố gắng cộng văn bản và số lại với nhau hoặc chia một số cho 0. Bất kể điều gì xảy ra, Python sẽ hiển thị thông báo ngoại lệ và mã sẽ tiếp tục thực thi tại thời điểm đó

Ví dụ, hãy xem xét tập lệnh code. py, contains an side line

Chúng tôi đã mong đợi mã này được đưa ra một Python ngoại lệ - sau tất cả, chúng tôi không thể chuyển đổi chuỗi 'a'thành nguyên. Nếu thử thực thi lệnh thi, bạn sẽ thấy một thông báo ngoại lệ tương tự như sau

Traceback [most recent call last]:

  File "code.py", line 1in 

Traceback [most recent call last]:0_______11 Traceback [most recent call last]:2Traceback [most recent call last]:3Traceback [most recent call last]:4Traceback [most recent call last]:5'a'

Thông báo ngoại lệ có thể trông đáng sợ, nhưng nó thực sự rất hữu ích. Nó cho chúng ta biết

  • Loại ngoại lệ Python nào đã được nêu ra [trong trường hợp này là Traceback [most recent call last]:7]
  • Dòng nào đã kích hoạt ngoại lệ [dòng 1 của mã lệnh. py]
  • In sao ngoại lệ được nêu ra. Thông báo này được truyền tải qua thông báo ngoại lệ Python Traceback [most recent call last]:8, nghĩa là 'a'không thể chuyển đổi chuỗi thành số nguyên

Các biến ngoại lệ phổ biến trong Python

Như bạn có thể mong đợi, có rất nhiều loại ngoại lệ Python bên ngoài kia. Hãy xem xét một số ngoại lệ Python mà bạn sẽ gặp phải thường xuyên nhất, cùng với các mẫu mã sẽ nêu ra chúng

Syntax error

Ngoại lệ này xuất hiện khi bạn viết mã Python sai cú pháp. Nguyên nhân phổ biến của công việc này là do quên sử dụng dấu hai chấm trên   0 câu lệnh. or to back the command quote/unmatched command in code. Hãy xem những ví dụ này

Nếu bạn gặp phải lỗi ngoại lệ Python này, giải pháp là tìm lỗi cú pháp trong mã của bạn và chỉnh sửa chúng

TypeLỗi

Ngoại lệ này để biết rằng bạn đã cố gắng thực hiện một thao tác bằng cách sử dụng loại dữ liệu sai. Như ví dụ sau minh họa, bạn không thể "thêm" một số và một chuỗi

Ngoại lệ này thường xuất hiện khi bạn cố gắng thực hiện một thao tác với giá trị Không có – là loại không chấp nhận bất kỳ thao tác nào.

Error value

Ngoại lệ này xuất hiện khi bạn cung cấp đúng loại dữ liệu cho một thao tác nhưng có giá trị không hợp lệ. Ví dụ. chúng ta không thể tính logarit của một số âm

ZeroDivisionLỗi

Như tên gợi ý, ngoại lệ này xảy ra khi bạn cố gắng chia một số cho 0

Bạn có thể coi nó như một phiên bản "chuyên dụng" của một tệp Traceback [most recent call last]:7

Error Index

Trường hợp ngoại lệ này xảy ra khi bạn cung cấp chỉ mục không hợp lệ cho một chuỗi – ví dụ. if the list only has 5 the death section but you try to get the death section at index   2

Main error

Đây là từ điển đối tác của   3. Ngoại lệ được đưa ra khi bạn cung cấp từ khóa không tồn tại cho từ điển Python

  4    6  7Traceback [most recent call last]:5Traceback [most recent call last]:4File1Traceback [most recent call last]:5File3File5Traceback [most recent call last]:5File7File8

Cách xử lý ngoại lệ trong Python

Đến giờ, có lẽ bạn đã hiểu rõ về cách thức hoạt động của các ngoại lệ Python và ý nghĩa của chúng. Nhưng làm thế nào để chúng ta đối phó với họ?

Chắc chắn, một số trường hợp ngoại lệ rất đơn giản. Nếu tôi gặp File9lỗi , giải pháp đơn giản là chỉnh sửa cú pháp trong mã của riêng tôi. Nhưng nếu tôi không biết những phím nào trong từ điển thì sao?

Nhập "code.py"0khối. Đây là một khối mã đặc biệt cố gắng chạy một dòng [hoặc một số dòng] mã mà chúng tôi biết có thể gây ra ngoại lệ Python. Nếu sự ngoại lệ thực sự được đưa ra, nó sẽ đi vào khối ngoại lệ , xử lý sự cố và giữ cho mã không bị lỗi xử lý

Đây là một ví dụ về giao diện của nó.   

_______41____42____43"code.py"4

"code.py"5"code.py"1____42"code.py"8"code.py"9, line 0, line 1

Chạy mã ở trên và thay đổi dòng , line 2 thành giá trị âm thanh. Như chúng ta đã thấy trước đây, logarit của một số âm không tồn tại, dẫn đến Traceback [most recent call last]:7trong mã của chúng ta. Tuy nhiên, bằng cách đặt dòng , line 4dưới , line 5khối, chúng tôi có thể dự đoán và xử lý vấn đề này

Bất kể khi nào Traceback [most recent call last]:7kích hoạt, mã chỉ cần bỏ qua thẳng vào , line 7khối. Trong khối đó, chúng tôi thông báo cho người dùng rằng họ nên cung cấp một số khác cho lệnh tập tin. Thay vì gặp sự cố, chương trình của chúng tôi hiện xử lý sự cố một cách duyên dáng và thông báo cho người dùng. Chống khủng hoảng

Xử lý ngoại lệ Python như một chuyên gia

Bây giờ chúng ta đã hiểu cơ bản về việc sử dụng "code.py"0các khối để xử lý ngoại lệ Python. Nhưng các khối mã này có thể được mở rộng theo một số cách mà chúng ta sẽ khám phá bên dưới

Bạn có thể sử dụng nhiều , line 9khối để xử lý các ngoại lệ khác nhau. Trong mã bên dưới, chúng tôi tính logarit của 10chia cho 11trong khi xử lý các ngoại lệ tiềm năng 12và Traceback [most recent call last]:7bên trong các , line 9khối tương ứng của chúng. Hãy thử chạy mã sau khi thay đổi giá trị của 10 hoặc 11và bạn sẽ thấy ngoại lệ tương ứng đang được xử lý

"code.py"5"code.py"1____420, line 1

"code.py"5"code.py"1____425, line 1

Cũng có thể nhóm hai hoặc nhiều ngoại lệ vào một , line 9khối duy nhất bằng cách sử dụng dấu trích đơn

, line 9

"code.py"5"code.py"1____42in3in4

Vì chúng tôi không biết trước mã dữ liệu sẽ kích hoạt một 12hay một Traceback [most recent call last]:7, chúng tôi nên sử dụng in7cấu trúc để thông báo có ngoại lệ đang được xử lý. Ví dụ. nếu mã kích hoạt một 12, thông báo được đưa vào sẽ trở thành " in9"

Một tùy chọn khác là sử dụng 0 để xử lý [hầu như] mọi ngoại lệ Python trong một khối

"code.py"5"code.py"1____42in3in4

Nhưng hãy cẩn thận. mặc dù việc xử lý ngoại lệ “bắt tất cả” này có thể hữu ích trong một số trường hợp nhất định, nhưng nó thực sự có thể khiến mã của bạn khó hiểu và khó giải quyết lỗi hơn. Một 0khối cuối cùng có thể ẩn các ngoại lệ mà bạn thậm chí không xem xét trước

Cuối cùng, có hai khối tùy chọn cho một "code.py"0khối

  • Khối 8này chỉ thực thi nếu không có bất kỳ ngoại lệ nào được đưa ra trong 9khối trước đó
  • Khối Traceback [most recent call last]:00luôn thực thi - bất kể có ngoại lệ Python nào được đưa ra hay không

Đây là ví dụ của chúng ta trông giống như thế nào với các khối ở trên được thêm vào. [Một lần nữa, thay đổi giá trị của 10và 11 để xem các thông báo khác nhau có trong. ]

"code.py"5Traceback [most recent call last]:04  Traceback [most recent call last]:06

"code.py"5"code.py"1____420, line 1

"code.py"5"code.py"1____425, line 1

"code.py"5"code.py"1____42Traceback [most recent call last]:20Traceback [most recent call last]:21

"code.py"5"code.py"1____42Traceback [most recent call last]:25, line 1

Như bạn có thể thấy, Traceback [most recent call last]:27được tính bên trong 9khối. Trong quá trình này, bất kỳ trường hợp ngoại lệ nào mà chúng tôi dự đoán sẽ bị chặn bởi , line 9khối tương ứng. Nếu không có bất kỳ ngoại lệ nào được đưa ra, mã sẽ nhập 8khối và hiển thị giá trị Traceback [most recent call last]:27đã được tính toán thành công. Sau đó, Traceback [most recent call last]:00khối kích hoạt và hiển thị kết thúc thông báo – bất kể mã trước đó có đưa ra ngoại lệ hay không

Tạo và nâng cao các ngoại lệ của riêng bạn trong Python

Nếu bạn cần linh hoạt hơn trong công việc xử lý lỗi của mình, Python cho phép bạn xác định các loại tùy chỉnh ngoại lệ. Bạn chỉ cần tạo một lớp với tên của tùy chỉnh ngoại lệ của mình

Traceback [most recent call last]:33 Traceback [most recent call last]:34

Đừng lo lắng nếu bạn không biết lớp là gì – bạn sẽ không thực sự cần biết về chúng để tạo và sử dụng các tùy chọn ngoại lệ

Sau đó, bạn có thể tăng chúng bằng cách sử dụng Traceback [most recent call last]:35từ khóa và chúng sẽ hoạt động giống như bất kỳ ngoại lệ Python nào khác. Ví dụ. Bên dưới mã bên dưới được đưa ra một ngoại lệ hiển thị thông tin bất kỳ khi bất kỳ giá trị nào của 10vượt quá giới hạn nhất định

"code.py"5Traceback [most recent call last]:38  Traceback [most recent call last]:40Traceback [most recent call last]:41

"code.py"5Traceback [most recent call last]:35Traceback [most recent call last]:44

Nếu chúng tôi thay đổi giá trị x thành 200, chúng tôi sẽ nhận được thông báo lỗi này

Traceback [most recent call last]:45Traceback [most recent call last]:46 Traceback [most recent call last]:47 Traceback [most recent call last]:48Traceback [most recent call last]:49

Bây giờ, bạn có thể thắc mắc Tại sao tôi lại muốn chương trình của mình bị lòi?. Câu trả lời thực sự phụ thuộc vào những gì bạn đang cố gắng đạt được với mã của mình

Nếu bạn đang viết mã mà người khác có thể sử dụng, sẽ rất hữu ích nếu bạn đưa ra các ngoại lệ để biết rõ lý do tại sao một thao tác hợp lệ nhất không hợp lệ. Sau đó, bất kỳ ai đang sử dụng mã đó đều có thể quyết định xem họ có cần thay đổi điều gì đó trong mã của mình hay họ muốn sử dụng một "code.py"0khối để phá vỡ các tùy chọn chỉnh sửa ngoại lệ của bạn. Trong mọi trường hợp, việc giữ mã của bạn rõ ràng và có tổ chức luôn được giải đáp

Chủ Đề