Python 错误和异常
Python错误包括:语法错误和异常
一、常见异常
异常 | 描述 |
---|---|
NameError | 尝试访问一个没有声明的变量引发的错误 |
IndexError | 索引超出序列范围引发的错误 |
IndentationError | 缩进错误 |
ValueError | 值错误 |
KeyError | 请求一个不存在的字典关键字引发的错误 |
IOError | 输入输出错误 |
ImportError | 当import语句无法找到模块或from无法在模块中找到相应的名称 |
AttributeError | 尝试访问未知的对象属性引发错误 |
TypeError | 类型不合适引发的错误 |
MemoryError | 内存不足 |
ZeroDivisionError | 除数为0引发的错误 |
二、异常处理语句
(一)异常处理语句语法
try:
正常代码(可能产生异常的语句块)
except (ExceptionName1,ExceptionName2) as alias:
当产生异常时要执行的语句块
else:
当没有发生异常的要执行语句块
finally:
不管理异常是否发生都要执行语句块
(二)例子
1、例1
import sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except OSError as err: #发生OSError异常处理语句
print("OS error: {0}".format(err))
except ValueError: #发生ValueError异常处理语句
print("Could not convert data to an integer.")
except: #发生其他类型异常处理语句
print("Unexpected error:", sys.exc_info()[0])
raise
例2:
try:
runf()
except AssertionError as error:
print(error)
else:
try:
with open('file.log') as file:
read_data = file.read()
except FileNotFoundError as fnf_error:
print(fnf_error)
finally:
print('无论异常是否发生都会执行。')
三、抛出异常raise语句
(一)raise语句语法
raise [ExceptionName [(reason)]]
1、用于指定抛出异常名称以及异常信息的相关描述,如果省略,只是想知道这是否抛出了一个异常,并不想去处理它,那么一个简单的 raise 语句就可以再次把它抛出。
2、(reason)抛出异常但不附带任何信息
(二)例子
a=int(input())
if a>5:
print(a)
else:
raise ValueError("输入范围超出")
Traceback (most recent call last):
File "C:/lx01032.py", line 5, in <module>
raise ValueError("输入范围超出")
ValueError: 输入范围超出