乐趣区

关于python:Python异常处理机制和常见异常类型

Python 的异样解决机制

解决异样的几种代码构造:

try…except…else 构造

如果 try 代码块内没有抛出异样,执行 else 代码块,否则执行 except 代码块。

graph TD
    A(try) -->| 程序产生异样 |B(except)
    A(try) -->| 程序没有异样 |C(else)
try:
    n1 = int(input('请输出一个整数:'))
    n2 = int(input('请输出另一个整数:'))
    result = n1 / n2
except BaseException as e:
    print('代码出错')
    print(e)
else:
    print('后果为:', result)

try…except…else…finally 构造

如果 try 代码块内没有抛出异样,执行 else 代码块,否则执行 except 代码块。finally 代码块无论是否产生异样都会执行,罕用来开释 try 块中申请的资源。

graph TD
    A(try) -->| 程序产生异样 |B(except)
    A(try) -->| 程序没有异样 |C(else)
    B --> D{finally}
    C -->D{finally}
try:
    n1 = int(input('请输出一个整数:'))
    n2 = int(input('请输出另一个整数:'))
    result = n1 / n2
except BaseException as e:
    print('代码出错')
    print(e)
else:
    print('后果为:', result)
finally:
    print('任何状况都会执行')
print('程序完结')

运行后果:

请输出一个整数:1
请输出另一个整数:4
后果为:0.25
任何状况都会执行
程序完结

traceback 模块

应用 traceback 模块打印异样信息

import traceback

try:
    print('1.------------------')
    num = 10/0
except:
    traceback.print_exc()

输入后果:

Traceback (most recent call last):
File “D:\study\python-study\chap8\traceback.py”, line 5, in <module>
num = 10/0
ZeroDivisionError: division by zero

Python 中常见的异样类型

异样类型 简述
ZeroDivisionError 除(或取模)0(所有数据类型)
IndexError 序列中找不到该索引
KeyError 映射中找不到该键
NameError 未声明 / 初始化对象(没有属性)
SyntaxError 语法错误
ValueError 传入有效的参数
退出移动版