#异常:每个异常都是一些类的实例,这些实例可以被引发,也可以进行捕捉;
#异常的引发:通过raise语句可以引发异常
'''
raise Exception
raise Exception("MyException!")
'''
#通过dir函数可以得到模块的内容
import math
print(dir(math))
#自定义异常类:必须确保从Exception继承或间接继承
class myExecption(Exception):pass
#异常的捕捉:try/except捕捉
try:
x=int(input("input x:"))
y=int(input('input y:'))
print(x/y)
except ZeroDivisionError as e:#访问异常对象,并打印
print(e)
except TypeError:
print("Type Error")
except (NameError,IOError):#可以通过一个except块捕获多个异常,必须通过圆括号将异常类括起来
print('Exception')
except (NameError,IOError)as e:
print(e)
except:#捕获所有异常
print("all Erroe")
#可以加else语句
while True:
try:
x=int(input("input x:"))
y=int(input('input y:'))
value=x/y;
print("x/y is",value)
except:
print("input illeegal!")
else:#当非法输入时,可以重复执行while语句
break
#finally子句可以用来在可能的异常后进行清理,和try子句联合使用
x=None
try:
x=1/2
finally:#不管try是由发生异常,finally都会执行,
#finally子句用于关闭文件或网络套接字非常有用
print('Clearing up!')
#异常和函数:若异常在函数内部引发而不被处理,则会传播到函数调用的地方,
#若调用出无异常处理则会到达全局作用域,若也没有处理,则程序带着栈跟踪终止
运行结果: