##异常
##什么是异常?
##微博上
##异常就是python发出的错误信号
##书上
##python用异常对象来表示异常情况,遇到异常后,会引发异常.如果异常对象并未被处理或者捕捉
##程序就会用所谓的回溯(traceback,一种错误的信息)终止执行:
##
##内建函数都在exceptions模块中可以用dir函数来调取
##
##raise语句来引发异常
##raise Exception
##Traceback (most recent call last):
## File "C:/python10期/3.15/课下练习及其思考.py", line 12, in <module>
## raise Exception
##Exception
##raise Exception("hello world")
##Traceback (most recent call last):
## File "C:/python10期/3.15/课下练习及其思考.py", line 17, in <module>
## raise Exception("hello world")
##Exception: hello world
一些常见的异常
Exception 所有异常的基类
AttributeError 特性引用或赋值失败时引发
IOError 试图打开不存在文件(包括其他情况时)引发
IndexError 在使用序列中不存在索引时引发
KeyError 在使用映射中不存在键时引发
NameError 找不到名字(变量)时引发
SyntaxError 在代码错误形式时引发
TypeError 在内建操作或者函数应用于错误类型的对象时引发
ValueError 在内建操作或者函数应用于正确的对象,但是该对象适用不适合的值引发
ZeroDivisionError 在除法或者模除操作的第二个参数为0时引发
如何创建异常
就像创建一个类一样,只不过是异常类
例如:class SomeCustomException(Exception):pass
捕捉异常
rey except语句来实现捕捉异常
try:
x=input()
y=input()
print(x/y)
except ZeroDivisionError:
print("注意分母不要为0")
捕捉对象
try:
x=input()
y=input()
print(x/y)
except ZeroDivisionError,e:
print("注意分母不要为0")
print(e)
全捕捉
try:
x=input()
y=input()
print(x/y)
except ZeroDivisionError,e:
print("注意分母不要为0")
print(e)
except 全捕捉
else语句
try:
x=input()
y=input()
print(x/y)
except ZeroDivisionError,e:
print("注意分母不要为0")
print(e)
else:
print("没有错误啊")
finally最终能够对异常进行清理,做一些收尾的工作
默写内容
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
#except Exception as e:
# print(e)
else:
print('try内代码块没有异常则执行我')
finally:
print('无论异常与否,都会执行该模块,通常是进行清理工作')