龙空技术网

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

信息科技云课堂 184

前言:

当前姐妹们对“python权限被拒绝如何解决”大体比较珍视,各位老铁们都需要了解一些“python权限被拒绝如何解决”的相关知识。那么小编同时在网上网罗了一些对于“python权限被拒绝如何解决””的相关文章,希望我们能喜欢,同学们一起来了解一下吧!

本文中,我们将探讨 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/else

x = 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      与资源使用相关的警告的基类

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

标签: #python权限被拒绝如何解决