首页 > 其他 > 详细

异常处理

时间:2019-08-09 00:39:02      阅读:107      评论:0      收藏:0      [点我收藏+]

一:异常基础

 (1)异常概念:

   (1)当程序在运行的时候 出现未知的错误

   (2)如果没有进行处理 会呈现出异常 程序随之结束

 

 (2)异常类型:

  (1)语法错误:

    (1)错误能立马发现 且作为程序与不能容忍语法错误

    (2)如果发现语法错误 需要立马改正

 (2)逻辑错误:

    (1)程序在运行的时候 出现不可预知或者不可避免的错误

    (2)针对该种错误可以通过异常捕获处理:

 

 (3)常见的错误类型:

    (1)NAMERROR   名字错误
    (2)SyntaxError     语法错误
    (3)KeyError     键不存在
    (4)ValueError    值错误
    (5)IndexError    索引错误

 

二:避免方法

  (1)如果针对错误是不能提前预知的 可以使用try....except.... 在错误发生之后进行处理

例如:

技术分享图片
try:
    被检测的代码块
except 异常类型:
    try中一旦检测到异常,就执行这个位置的逻辑
#举例
try:
    f=open(a.txt)
    g=(line.strip() for line in f)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:
    f.close()
View Code

  

    (2)可以根据条件进行异常处理 如果错误条件可以提前预知 我们可以通过if进行处理 防止错误发送

例如:

技术分享图片
AGE=10
while True:
    age=input(>>: ).strip()
    if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
        age=int(age)
        if age == AGE:
            print(you got it)
            break
View Code

 

(3)Exciption/BaseException

作用:当可能出现大量的异常的时候 其可以匹配任意类型的错误
例如:
try:
    name
    l = [1,2,3]
    l[111]
    d = {name:jason}
    d[password]
    # Exception
except BaseException:  # 万能异常  所有的异常类型都被捕获
    print(老子天下无敌)

 

(5)finally:

作用:无论有没有异常 最后都会执行我

例如:

try:
    # name
    l = [1,2,3]
    l[111]
    # d = {‘name‘:‘jason‘}
    # d[‘password‘]
except Exception:  # 万能异常  所有的异常类型都被捕获
    print(老子天下无敌)
else:
    print(被检测的代码没有任何的异常发生 才会走else)
finally:
    print(无论被检测的代码有没有异常发生 都会在代码运行完毕之后执行我)

 

rasie:

作用:主动抛出异常

例如:

主动抛异常
if egon == DSB:
    pass
else:
    raise TypeError(尽说大实话)
关键字raise就是主动抛出异常

 

assert:

作用:猜测数据的状态 猜对了正常执行 猜错了抛出异常

例如:

主动抛异常
if egon == DSB:
    pass
else:
    raise TypeError(尽说大实话)
关键字raise就是主动抛出异常

 

自定义异常:

作用:可以继承BaseException 通过该类可以自定义自己异常

例如:

class MyError(BaseException):
     def __init__(self,msg):
         super().__init__()
         self.msg=msg
     def __str__(self):
         return <dfsdf%ssdfsdaf> %self.msg

raise MyError(我自己定义的异常)

异常处理

原文:https://www.cnblogs.com/SR-Program/p/11324422.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!