总体描述
内置的异常类:网页链接
有时候代码写错了,执行程序的时候,执行到错误代码的时候,程序直接终止报错
这是因为Python检测到一个错误时,解释器就无法继续执行了,出现了错误的提示
try:
可能出现错误的代码块
expect:
【在此处尽量的去处理捕获到的错误】
出错之后执行的代码块
else:
没有出错的代码块
finally:
不管有没有出错都执行的代码块
【BaseException】和【Exception】
try … except 语句
将可能出错的代码放到 try 里面,except 可以指定类型捕获异常。
except 里面的代码块是捕获到异常时执行的,将错误捕获
这样程序就不会因为一段代码包异常而导致整个程序崩溃
【except】 在捕获错误异常的时候,是要根据具体的错误类型来捕获的
用一个块 可以捕获多个不同类型的异常
'__cause__', '__class__', '__context__', '__delattr__','__dict__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__gt__', '__hash__', '__init__', '__init_subclass__', '__le__',
'__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__',
'__suppress_context__', '__traceback__', 'args', 'with_traceback'
print(dir(Exception))
try:
print(b)
pass
except NameError as msg:
print(msg)
pass
finally:
print('异常1运行结束')
try:
li = [1,2,3]
print(li[10])
pass
except IndexError as msg:
print(msg)
pass
finally:
print('异常2运行结束')
try:
li = [1,2,3]
print(li[10])
print(b)
pass
except IndexError as msg:
print(msg)
pass
except IndexError as msg:
print(msg)
pass
finally:
print('异常3运行结束')
try:
print(b)
li = [1,2,3]
print(li[10])
pass
except NameError as msg:
print(msg)
pass
except IndexError as msg:
print(msg)
pass
finally:
print('异常4运行结束')
def A(s):
return 10/int(s)
pass
def B(s):
return A(s)*2
pass
try:
B('0')
pass
except Exception as mag:
print(mag)
pass
finally:
print('异常5运行结束')
-----------------------------异常的抛出机制------------------------------ 如果在运行时发生异常,解释器会查找相应的异常捕获类型 如果在当前函数里没有找到的话,它会将异常传递给上层的函数 看能否处理 如果在最外层没有找到。解释器就会退出,程序 down 掉
try … except … else语句
except如果不执行,就执行else中的语句
try:
print(aa)
pass
except Exception as mag:
print(mag)
pass
else:
print('Try里的代码没有异常')
pass
finally:
print('异常1运行结束')
try … except … finally语句
finally 最后都必须执行的代码
try:
int('ffffffff')
pass
except Exception as mag:
print(mag)
pass
finally:
print("不管有没有异常,都会执行的代码块")
print('异常7运行结束')
pass
自定义异常
直接或者间接继承 Error 或者 Exception 类
由开发者主动抛出自定义异常,在 Python 中使用 raise 关键字
class LeNumExpect(Exception):
def __init__(self,leng):
'''
长度
'''
self.len = leng
pass
def __str__(self):
return '您输入的姓名数据长度是'+str(self.len)+'超过长度了…'
pass
pass
def name_Test():
name = input('请输入姓名:')
try:
if len(name) > 5:
raise LeNumExpect(len(name))
else:
print(name)
pass
pass
except LeNumExpect as error:
print(error)
pass
else:
print('格式正确')
pass
finally:
print('异常8运行结束')
pass
name_Test()
|