通过实例学习Python中的异常处理

云课堂学Python 2024-04-04 02:08:18

本文中,我们将探讨 Python 中的异常处理。我们将讨论 try/except,除此之外,我们将学习如何定义自己的 python 异常。

使用 try/except 处理异常

当你认为代码的一部分可能会引发异常时,请将其放在 try/except 块中。

try: for i in range(3): print(3/i)except: print("除以 0 错误。") print('看到此文本表示你的代码出现异常。')

当代码在 try 块中出现异常时,解释器会执行后面的 except 块。

使用 try/except 处理多个异常a, b = 1, 0try: print(a/b) print("本字符串不会输出。") print('10'+10)except TypeError: print("数据类型错误。")except ZeroDivisionError: print("除以 0 错误。")

程序代码一旦遇到异常,就会跳过 try 块之后的语句。如果未找到 except,则不会处理异常。

a, b = 1, 0try: print(a/b) print("本字符串不会输出。") print('10'+10)except (TypeError,ZeroDivisionError): print("代码异常")

还可以使用一个 except,包含多个异常类型,处理多个异常。

a, b = 1, 0try: print(a/b) print("本字符串不会输出。") print('10'+10)except: print("代码异常")

还可以直接使用一个 except,不使用异常类型,处理所有异常。

使用 try/except/elsex = input('请输入一个数:')y = input('请输入另一个数:')try: a = int(x) b = int(y) c = a/bexcept ValueError: print('检查输入字符串是否为可转换为整数。')except ZeroDivisionError: print('除以 0 错误。')else: print('没有错误。')

「输出:」

>>> %Run 1.py请输入一个数:10请输入另一个数:5没有错误。>>> %Run 1.py请输入一个数:10请输入另一个数:0除以 0 错误。>>> %Run 1.py请输入一个数:10请输入另一个数:5.0检查输入字符串是否为可转换为整数。使用 try/except/finally

无论程序代码是否引发异常,始终执行 finally 块中的代码。

x = input('请输入一个数:')y = input('请输入另一个数:')try: a = int(x) b = int(y) c = a/bexcept ValueError: print('检查输入字符串是否为可转换为整数。')except ZeroDivisionError: print('除以 0 错误。')else: print('没有错误。')finally: print('程序执行完毕。')

「输出:」

>>> %Run 1.py请输入一个数:10请输入另一个数:5没有错误。程序执行完毕。>>> %Run 1.py请输入一个数:10请输入另一个数:0除以 0 错误。程序执行完毕。>>> %Run 1.py请输入一个数:10请输入另一个数:5.0检查输入字符串是否为可转换为整数。程序执行完毕。try/except 中的 raise 关键字

有时可能希望通过引发某个异常来处理某种情况。可以使用 raise 关键字强制发生异常。

x = input('请输入一个数:')y = input('请输入另一个数:')try: a = int(x) b = int(y) if b==0: raise ZeroDivisionErrorexcept ZeroDivisionError: print('除以 0 错误。')自定义的异常

Python 中有许多内置的异常类型,但它们可能并不总是符合你的需要。你可以自定义异常类型。

若要创建用户自定义的异常,必须创建一个从 Exception 继承的类。

class OutOfAge(Exception): passtry: age = int(input("请输入你的年龄:")) if age < 18: raise OutOfAgeexcept OutOfAge: print('你是未成年人。')Python 内置异常类型汇总BaseException 所有异常的基类 +-- SystemExit 解释器请求退出 +-- KeyboardInterrupt 用户中断执行(通常是输入^C) +-- GeneratorExit 生成器(generator)发生异常来通知退出 +-- Exception 常规错误的基类 +-- StopIteration 迭代器没有更多值 +-- StopAsyncIteration 必须通过异步迭代器对象的__anext__()方法引发以停止迭代 +-- ArithmeticError 所有数值计算错误的基类 | +-- FloatingPointError 浮点计算错误 | +-- OverflowError 数值运算超出最大限制 | +-- ZeroDivisionError 除(或取模)零 (所有数据类型 +-- AssertionError 断言语句失败 +-- AttributeError 对象没有这个属性 +-- BufferError 与缓冲区相关的操作时引发 +-- EOFError 没有内建输入,到达EOF 标记 +-- ImportError 导入失败 | +-- ModuleNotFoundError 找不到模块 +-- LookupError 无效数据查询的基类 | +-- IndexError 序列中没有此索引(index) | +-- KeyError 映射中没有这个键 +-- MemoryError 内存溢出错误 +-- NameError 未声明、初始化对象 | +-- UnboundLocalError 访问未初始化的本地变量 +-- OSError 操作系统错误, | +-- BlockingIOError 操作将阻塞对象设置为非阻塞操作 | +-- ChildProcessError 子进程上的操作失败 | +-- ConnectionError 与连接相关的异常的基类 | | +-- BrokenPipeError 在已关闭写入的套接字上写入 | | +-- ConnectionAbortedError 连接尝试被对等方中止 | | +-- ConnectionRefusedError 连接尝试被对等方拒绝 | | +-- ConnectionResetError 连接由对等方重置 | +-- FileExistsError 创建已存在的文件或目录 | +-- FileNotFoundError 请求不存在的文件或目录 | +-- InterruptedError 系统调用被输入信号中断 | +-- IsADirectoryError 在目录上请求文件操作 | +-- NotADirectoryError 在不是目录的事物上请求目录操作 | +-- PermissionError 在没有访问权限的情况下运行操作 | +-- ProcessLookupError 进程不存在 | +-- TimeoutError 系统函数在系统级别超时 +-- ReferenceError 弱引用试图访问已经垃圾回收了的对象 +-- RuntimeError 一般的运行时错误 | +-- NotImplementedError 尚未实现的方法 | +-- RecursionError 解释器检测到超出最大递归深度 +-- SyntaxError Python 语法错误 | +-- IndentationError 缩进错误 | +-- TabError Tab 和空格混用 +-- SystemError 一般的解释器系统错误 +-- TypeError 对类型无效的操作 +-- ValueError 传入无效的参数 | +-- UnicodeError Unicode 相关的错误 | +-- UnicodeDecodeError Unicode 解码时的错误 | +-- UnicodeEncodeError Unicode 编码时错误 | +-- UnicodeTranslateError Unicode 转换时错误 +-- Warning 警告的基类 +-- DeprecationWarning 关于被弃用的特征的警告 +-- PendingDeprecationWarning 关于构造将来语义会有改变的警告 +-- RuntimeWarning 可疑的运行行为的警告 +-- SyntaxWarning 可疑的语法的警告 +-- UserWarning 用户代码生成的警告 +-- FutureWarning 有关已弃用功能的警告的基类 +-- ImportWarning 模块导入时可能出错的警告的基类 +-- UnicodeWarning 与Unicode相关的警告的基类 +-- BytesWarning bytes和bytearray相关的警告的基类 +-- ResourceWarning 与资源使用相关的警告的基类

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

0 阅读:0

云课堂学Python

简介:感谢大家的关注