15.1异常处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于15.1异常处理的主要内容,如果未能解决你的问题,请参考以下文章

PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段

使用片段中的处理程序时出现非法状态异常

Java异常处理机制

java 反射代码片段

java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段