异常处理

异常处理

'''
代码报错一般有两种:
    语法错误
    逻辑错误
语法错误是不能容忍的
逻辑错误,是可以容忍的

报错内容分为三部分
    报错类型
    报错信息
    报错位置
'''

# try:
#     # name
#     d = {'name':'asd'}
#     d['choice']
# except NameError:
#     print('NameError')
# except KeyError:
#     print('KeyError')
'''
发送错误后,会立即停止执行代码
执行except语句,对比发送错误的类型
'''


# try:
#     name
#     d = {'name':'asd'}
#     d['choice']
# except Exception as e:  # 把错误信息赋值给变量名e
#     print(e)


# Exception, BaseException  这两个是万能捕获异常  能捕获所有类型错误

# try:
#     name
#     d = {'name':'asd'}
#     d['choice']
# except NameError as e:  # 把错误信息赋值给变量名e
#     print(e)
# else:
#     print('代码没有错误时,会执行else的代码')
# finally:
#     print('不管代码有没有错,都会执行这段代码')

主动抛出异常

# 主动抛出异常
# tank = 'dsb'
# if tank == 'sb':
#     print('tank真帅')
# else:
#     raise Exception

断言

# 断言
l = [1,2,3]
assert len(l) > 4
# 断言判断某个数据状态,猜对了就继续执行下面的代码,没猜对直接报错

自定义异常

# 自定义异常
# class MyError(BaseException):
#     def __init__(self, msg):
#         super().__init__()
#         self.msg = msg
#
#     def __str__(self):
#         return '%s' %self.msg
#
#
# raise MyError('自定义的异常')  # 主动抛出异常其实就是将异常类对象打印出来,需要走__str__方法
原文地址:https://www.cnblogs.com/asdaa/p/11323032.html