15.1异常处理

异常处理

try:
    #代码块,逻辑
    inp=input("序号:")
    i=int(inp)
except Exception as e:
    #e是一个Exception的对象,里面封装了错误信息
    #错误时执行
    i=1
    print(e)
    # invalid literal for int() with base 10: 'w'
    print(i)

异常有多种类型

try:
    li=[1,2,3]
    li[999]
except IndexError as e:
    print("IndexError:",e)
try:
    int("dhj")  #如果ValueError不能捕获,就会报错
    li1=[1,2,3]  #一旦出现错误,try后面的代码就不再执行了
    li1[999]
except ValueError as e:
    print("ValueError:",e)
except IndexError as e:
    print("IndexError",e)
except Exception as e:
    print("Exception:",e)
else:
    print("ok!")
#前面都没错,执行else
finally:
    print("go on ……")
#不管出不出错,都要执行finally

# IndexError,ValueError都是Exception的子类
#日志分类时候,需要对细分的错误放在前面,Exception放在最后

主动抛出异常

#主动抛出异常
try:
    #主动触发异常
    raise Exception("异常123")  #创建了一个Exception()对象
except Exception as e:
    print(e)
# 异常123

日志实例

def db():
    return False

def index():
    try:

        rh="hgd"
        rh=int(rh)

        result=db()
        if not result:
            raise Exception("数据库处理错误")

    except Exception as e:
        str_error=str(e)
        print(str_error)
        f=open("log.txt","a",encoding="utf-8")
        f.write(str_error)
        f.close()

index()

自定义异常

#自定义异常
class olderror(Exception):

    def __init__(self,msg):
        self.message=msg

    def __str__(self):
        return self.message

a=olderror("ojj")
print(a)
# ojj

try:
    raise olderror("HEHE")
except olderror as e:
    print(e)

# HEHE

断言

# assert 断言,条件成立,继续执行,条件不成立,报错,不能往后执行
# assert 条件
print(23)
assert 1==2
print(456)

转载于:https://blog.51cto.com/10777193/2103007

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值