Python软件开发中,会遇到各种类型的错误,例如语法错误、逻辑错误和运行时错误。
语法错误通常在程序开发初期出现,是由于语法不正确导致的。编译程序时,语法错误很容易被发现。
逻辑错误则源于逻辑实现不当,例如程序访问一个未排序的列表,却假设它是已排序的。逻辑错误是最难追踪的错误类型之一。
运行时错误是比较常见的错误,通常是因为没有考虑所有边界情况而发生的。例如,尝试访问一个不存在的文件。
本文教程将讲解如何处理Python中的错误,以及如何记录错误日志以便更好地理解应用程序中出现的问题。 我们将涵盖以下主题:
try
和except
处理异常finally
语句Python异常处理
让我们从一个简单的Python加法程序开始。该程序接收两个参数作为输入并打印它们的和:
def addNumbers(a, b): print(a + b) addNumbers(5, 10)
运行上述程序,将会打印出两个数的和。
创建自定义异常类可以提高程序的可读性和可维护性。例如,假设有一个程序需要确保商品的折扣价不高于销售价,我们可以为这类错误创建一个自定义异常:
class PriceError(Exception): pass
然后,在程序中添加异常处理:
def discount(price, discounted_price): if discounted_price > price: raise PriceError else: print("Discount applied")
上述代码中,如果discounted_price
大于price
,则会引发PriceError
异常。
Python日志记录
Python的logging
模块提供了一种记录程序运行信息的机制,包括错误信息。 我们可以设置不同的日志级别,例如DEBUG、INFO、WARNING、ERROR和CRITICAL。以下代码片段展示了如何使用logging
模块记录信息:
import logging # 初始化日志设置 logging.basicConfig(filename='app.log', level=logging.INFO) try: # ...你的代码... except Exception as e: logging.exception(str(e))
将日志级别设置为INFO,则INFO及以上级别的日志信息(包括WARNING、ERROR和CRITICAL)都会被记录。
获取堆栈跟踪信息
在上面的例子中,只有一个程序文件,因此很容易找到错误发生的位置。但是,当涉及多个程序文件时,获取错误的堆栈跟踪信息就显得尤为重要。 可以使用logging.exception()
方法记录异常的堆栈跟踪信息,如下所示:
import logging # 初始化日志设置 logging.basicConfig(filename='app.log', level=logging.INFO) try: filePointer = open('appFile', 'r') try: content = filePointer.readline() finally: filePointer.close() except IOError as e: logging.exception(str(e))
如果运行上述程序并发生异常,错误信息将被记录到日志文件中,其中包含堆栈跟踪信息。
总结
本教程介绍了Python错误处理和日志记录的基本方法,包括try
、except
和finally
语句的使用以及logging
模块的应用。 建议阅读官方文档以获取更详细的信息。
本文档已更新,并包含Esther Vaati的贡献。Esther是Envato Tuts 的软件开发人员和撰稿人。
以上是python中的错误处理和登录的详细内容。更多信息请关注PHP中文网其他相关文章!