异常的传递
将异常在外部解决
- 在try中还可以嵌套try,但是内部的try可以省略掉except,用finally来指代内部出错,try嵌套中的所有异常,都可以用最外层的except来指出、
try:
#print(num)
try:
print(a)
finally:
print('内部')
except:
print('外部捕获到了异常')
- 函数嵌套中,在函数的嵌套中,因为下一个套用上一个,函数之间存在着以来罐子,假如第一个函数就有问题,就会影响下面的函数调用,
def f1():
print(a)
def f2():
f1()
def f3():
f2()
f3()
只是针对于f1中的某一句报错来处理
def f1():
try:
print(a)
except:
print('异常')
def f2():
f1()
def f3():
f2()
f3()
把整个函数f1中可能的错误打包处理
def f1():
print(a)
def f2():
try:
f1()
except:
print('异常')
def f3():
f2()
f3()
把整个函数f2(f1())中可能的错误打包处理
def f1():
print(a)
def f2():
f1()
def f3():
try:
f2()
except:
print('异常')
f3()
手动抛出异常
1:
自定义一个异常类
class Ageerror(Exception):
def __init__(self,age):
self.__age = age
#重写str方法
def __str__(self):
return '输入的年龄有误%s'%self.__age
注意继承的是Exception
2:
class Person(object):
def __init__(self, name, age):
if age > 0 and age <= 150:
self.age = age
self.name = name
else:
#抛出自定义异常
raise Ageerror(age)
xm = Person('小明',160)
在except Exception as e 中可以有各种各样的操作,继续进行流程判断,break continue都行