Python之异常处理

异常处理

1. 异常处理:程序一旦发生异常,就不会继续执行,所以我们需要使用处理这种异常。

  a. 使用if规避,但是成本很高

  b. try...except进行处理

try:
    "没有出现expect异常时执行,只执行到出现expect中异常的地方"
except "异常类型" as "变量名":
    "出现expect异常时执行"
    print("提示的内容%s"%"变量名")

  c. 一种错误类型,只能处理对应的一种错误,其他错误还会照常报错。

  d. expect多个,只执行第一个匹配的expect异常处理

2. Exception:万能异常,只能判断有异常,没法判断具体的异常情况

  a. 对于已经可以预见的,但是必须要处理的,不能完全规避的必须要处理的异常,要去指定他的处理方式

  b. 对于不能确定的 ,使用万能异常

  c. 万能异常应该放在所有异常之后

3. 异常处理中的else,try中的代码块没有发生异常时执行

4. finally,无论try中的代码块有没有发生异常,都会执行

  a. 当发生了异常return时,还能执行finally,但是要先执行finally,再return

  b. 主要做一些清理的工作,把之前打开的链接 文件都关掉,避免因为程序异常造成的浪费资源和逻辑问题

5. 装饰器

def wrappr(func):
    def inner(*args,**kwargs):
        try:
            return func(*args,**kwargs)
        finally:
            "清理工作"
    return inner

 6. 顺序问题

try:
    f = open("file")
    int(f.read())
except ValueError:    # try中出现ValueError异常时执行
    print("读文件失败")
except Exception as e:
    print(e)
else:    # try代码块中没有异常的时候才会被执行
    print("操作成功")
finally:    # finally代码块中的代码永远执行
    f.close()

复制代码

 7. raise:主动触发异常

  assert:断言,类似if判断

assert 1==2    # 报错,之后的程序都不会执行

 

 

try:
    num = input("num:")
    int(num)
    print(num)
    a = 1
    sum(12,33,4)
except ValueError:
    print("请输入一个数字")
except NameError:
    print("命名错误")
except TypeError:
    print("数据类型错误")

 

 

 

posted @ 2019-12-21 11:29  chitalu  阅读(192)  评论(0编辑  收藏  举报