# 捕获异常
l = [1, 2, 3]
try:
print(l[5]) # 引发下标越界的错误
except:
print("Error!") # 引发异常
else:
print("No error!") # 未引发异常的情况
finally:
print("Read end") # 不管有没有引发异常都会执行这一步
# except后面是可以加异常名的
try:
print(l[2] / 0)
except IndexError: # 仅捕获下标越界的异常
print("Index Error!") # 由于l[2]并没有引发下标越界,所以此处不会有异常
except ZeroDivisionError: # 仅捕获除数为0的异常
print("Zero Division Error") # 由于除数为0,所以会在此处爆出异常
else:
print("No error!") # 未引发异常的情况
finally:
print("Read end") # 不管有没有引发异常都会执行这一步
# python的内置异常表:
# AttributeError 调用不存在的方法引发的异常
# EOFError 遇到文件末尾引发的异常
# ImportError 导入模块出错引发的异常
# IndexError 列表的下标越界引发的异常
# IOError I/O操作引发的异常,如打开文件出错
# KeyError 使用字典中不存在的关键字引发的异常
# NameError 使用不存在的变量名引发的异常
# TabError 语块缩进不正确引发的异常
# ValueError 搜索列表中不存在的值引发的异常
# ZeroDivisionError 除数为0引发的异常
try:
print(l[2] / 0)
except (IndexError, ZeroDivisionError): # 捕获IndexError或ZeroDivisionError两个异常
print("Index or zero division error!")
else:
print("No error!") # 未引发异常的情况
finally:
print("Read end") # 不管有没有引发异常都会执行这一步
# 在嵌套的try语句中,一旦引发异常,python将匹配最近的except语句,如果except语句能捕获该异常
# 则外围的try语句不会捕获该异常,如果except忽略该异常,则异常将被外界的语句捕获
# 自定义异常类
class Error(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
try:
raise Error('err') # 使用raise语句引发了一个异常
except Error:
print('error')
首发于我的个人网站:
点击打开链接
转载请注明原文地址: https://ju.6miu.com/read-1305895.html