企业官方网站建设如何,微网站开发报价,百度网页版主页网址,深圳推广公司哪家好❤️ 博客主页#xff1a;水滴技术 #x1f338; 订阅专栏#xff1a;Python 入门核心技术 #x1f680; 支持水滴#xff1a;点赞#x1f44d; 收藏⭐ 留言#x1f4ac; 文章目录 一、异常是什么#xff1f;二、异常处理的基本语法三、捕获特定的异常类型四、finall… ❤️ 博客主页水滴技术 订阅专栏Python 入门核心技术 支持水滴点赞 收藏⭐ 留言 文章目录 一、异常是什么二、异常处理的基本语法三、捕获特定的异常类型四、finally语句五、自定义异常六、assert语句七、Python内置异常八、总结系列文章热门专栏 大家好我是水滴~~
Python是一种易学易用的编程语言但即使是经验丰富的开发人员也会偶尔遇到错误和异常。在这篇教程中我们将深入讨论Python中的异常处理。
一、异常是什么
在Python中当发生错误或意外情况时会引发异常。异常是Python中的一种错误处理机制它允许程序员捕获和处理错误以避免程序崩溃。
Python中的异常通常是由错误的语法或运行时错误引起的例如 语法错误Syntax Error在编写代码时违反了Python语法规则。 运行时错误Runtime Error这是在程序运行时发生的错误例如尝试使用未定义的变量或调用不存在的函数等。
二、异常处理的基本语法
在Python中我们可以使用try和except语句来捕获和处理异常。try语句用于包含可能引发异常的代码块而except语句用于定义处理异常的代码块。
以下是try和except语句的基本语法
try:# 可能引发异常的代码
except:# 处理异常的代码在上面的代码中当try语句块中的代码引发异常时控制将转移到except语句块中的代码以处理异常。
三、捕获特定的异常类型
在实际编程中我们通常只想捕获特定的异常类型。这可以通过指定一个或多个异常类型来实现。
以下是一个示例演示如何捕获指定的异常类型
try:# 可能引发异常的代码x 10 / 0
except ZeroDivisionError:# 处理除以零的异常print(除以零错误)
except:# 处理所有其他异常print(发生了一个错误)在上面的示例中我们使用了两个except语句。第一个except语句捕获ZeroDivisionError异常这是由于除以零引起的异常。第二个except语句用于处理所有其他异常。
四、finally语句
在Python中还有一个finally语句它用于定义在try语句块完成后始终要执行的代码块。无论try语句块是否引发异常finally语句块都将被执行。
以下是一个使用finally语句的示例
try:# 可能引发异常的代码f open(myfile.txt, r)data f.read()print(data)
except:# 处理异常print(无法读取文件)
finally:# 关闭文件f.close()在上面的示例中我们尝试打开一个名为“myfile.txt”的文件并读取其中的数据。如果出现任何异常我们将打印“无法读取文件”。无论是否出现异常我们都将使用finally语句块关闭文件。
五、自定义异常
除了Python内置的异常类之外我们还可以定义自己的异常类。这可以通过创建一个新的异常类来实现。为了创建一个新的异常类我们必须继承Python内置的Exception类或其子类并定义自己的异常消息。
以下是一个示例演示如何定义自己的异常类
class CustomError(Exception):def __init__(self, message):self.message message在上面的示例中我们创建了一个名为CustomError的自定义异常类它继承自Python内置的Exception类。我们定义了一个构造函数它接受一个消息参数并将其存储为异常消息。
我们可以在程序中使用raise语句来引发自定义异常
try:# 可能引发异常的代码x int(input(请输入一个正整数))if x 0:raise CustomError(输入必须是正整数)
except CustomError as e:# 处理自定义异常print(e)
except:# 处理所有其他异常print(发生了一个错误)在上面的示例中我们要求用户输入一个正整数。如果输入的值小于或等于0我们将引发自定义异常CustomError并在except语句块中处理它。
六、assert语句
在Python中还有一种异常处理技术是使用assert语句。assert语句用于检查某些条件是否为真并在条件不满足时引发一个异常。assert语句的基本语法如下
assert condition, error message在上面的代码中condition是一个布尔表达式如果为False则会引发一个异常。error message是一个可选的错误消息用于描述何时发生了异常。
以下是一个使用assert语句的示例
x 10
assert x 5, x的值应该是5在上面的示例中我们使用assert语句检查变量x的值是否等于5。由于x的值是10不等于5因此将引发一个异常并输出错误消息“x的值应该是5”。
七、Python内置异常
以下是Python 3.10版本中所有内置异常类型及其含义的分层次列表 BaseException所有内置异常的基类 SystemExit程序退出时引发的异常 KeyboardInterrupt用户中断程序时引发的异常 GeneratorExit生成器函数被关闭时引发的异常 Exception大多数内置异常的基类 StopIteration用于迭代器的异常表示迭代完成 StopAsyncIteration用于异步迭代器的异常表示迭代完成 ArithmeticError所有算术异常的基类 FloatingPointError浮点数运算异常 OverflowError数值运算结果太大而无法表示 ZeroDivisionError除数为零 AssertionError断言语句assert失败 AttributeError访问对象不存在的属性 BufferError缓冲区操作失败 EOFError没有读取到数据 ImportError无法导入模块或模块不存在 ModuleNotFoundError无法找到模块 LookupError无法找到值的基类 IndexError索引超出序列范围 KeyError字典中不存在键 MemoryError内存耗尽 NameError名称未声明或不存在 UnboundLocalError尝试访问未初始化的本地变量 OSError由操作系统引起的异常 BlockingIOErrorI/O操作无法立即完成 FileExistsError文件已存在 FileNotFoundError文件或目录不存在 InterruptedError系统调用被中断 IsADirectoryError尝试对目录进行文件操作 NotADirectoryError尝试对非目录进行目录操作 PermissionError没有适当的权限 ProcessLookupError指定的进程不存在 TimeoutError操作超时 ReferenceError弱引用weak reference操作失败 RuntimeError通用运行时异常的基类 NotImplementedError尚未实现的方法 RecursionError递归调用层数过多 SyntaxError语法错误 IndentationError缩进错误 SystemError解释器内部错误 TypeError类型不匹配 ValueError值不符合预期 UnicodeErrorUnicode相关的错误 Warning警告的基类 DeprecationWarning过时警告 PendingDeprecationWarning即将过时警告 RuntimeWarning运行时警告 SyntaxWarning语法警告 UserWarning用户自定义警告 FutureWarning未来可能会改变的警告 ImportWarning导入模块时的警告 UnicodeWarningUnicode相关的警告 BytesWarningbytes和bytearray相关的警告
请注意Python的不同版本可能会有所不同。上面的列表只是Python 3.10版本中内置异常类型的一个示例其他版本可能会有所不同。
八、总结
在Python中异常处理是一种强大的机制可用于捕获和处理错误。我们可以使用try和except语句来捕获异常并在出现异常时执行特定的代码块。我们还可以使用finally语句在try语句块完成后执行一些代码。如果我们想捕获特定类型的异常我们可以使用多个except语句并指定每个异常类型。我们还可以定义自己的异常类并使用raise语句引发自定义异常。最后我们还可以使用assert语句检查条件并在条件不满足时引发异常。通过使用这些异常处理技术我们可以编写更健壮、可维护和可靠的Python代码。 系列文章 Python 基础一初识 Python Python 基础二搭建 Python 开发环境 Python 基础三Python 集成开发工具 IDLE Python 基础四基础语法 Python 基础五变量与常量 Python 基础六基本数据类型 Python 基础七常用运算符 Python 基础八流程控制语句 Python 基础九列表 Python 基础十元组 Python 基础十一集合 Python 基础十二字典 Python 基础十三函数 Python 基础十四类和对象 Python 基础十五模块 Python 基础十六包 Python 基础十七库
热门专栏 《Python入门核心技术》 《IDEA 教程从入门到精通》 《Java 教程从入门到精通》 《MySQL 教程从入门到精通》 《大数据核心技术从入门到精通》