#异常:每个异常都是一些类的实例,这些实例可以被引发,也可以进行捕捉;
#异常的引发:通过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!')#异常和函数:若异常在函数内部引发而不被处理,则会传播到函数调用的地方,
#若调用出无异常处理则会到达全局作用域,若也没有处理,则程序带着栈跟踪终止
运行结果: