异常处理


异常的传递

将异常在外部解决

  • 在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都行

原文地址:https://www.cnblogs.com/cizao/p/11481779.html