python异常处理

程序运行时出现异常,如果不处理会导致程序运行终止。如果不想让程序因异常而终止则需要对异常进行处理。
#常见的异常类型有:

ValueError: 传入值不正确
NameError: 没有被赋值的变量,not defined
KeyError: 访问字典里不存在的Key值
IndexError: 超出索引范围
IndentationError: 语法错误
AttributeError:属性错误
TypeError:类型错误
等

try except

try:
(代码)
except (异常类型):
(接下来执行的代码)
print('2')

try:
    print(qqq)
except NameError:
    print('错误')

print('111')


2
错误
111

如果except的异常类型不符,依然报错,程序依然停止:

print('2')

try:
    print(qqq)
except IndexError:  # 类型更改下
    print('错误')

print('111')


2
  
  print(qqq)
NameError: name 'qqq' is not defined
try:
    print('1')
    print('2')
    print(qqq)
    print('3')
    print('4')
except NameError:  # 检测到异常执行下面代码,结果里没有3,4
    print('错误')

# 1
# 2
# 错误
try:
    print('1')
    print('2')
    print(qqq)
    print('3')
    print('4')
except NameError as e:  # 把错误的值赋给e
    print(e)

# 1
# 2
# name 'qqq' is not defined

try后面可以跟很多except 捕获多种异常

try except Exception:

Exception 万能异常

try:
    print('1')
    print('2')
    print(qqq)
    print('4')
except Exception as e:
    print(e)

# 1
# 2
# name 'qqq' is not defined

try except finally

不管有没有异常都会执行finally之后的代码,没有异常执行else之后的。

try:
    print('1')
    print('2')
    print(qqq)
    print('4')
except Exception as e:
    print(e)
else:
    print('没有异常')
finally:
    print('最终都会执行')

# 1
# 2
# name 'qqq' is not defined
# 最终都会执行
try:
    print('1')
    print('2')
    # print(qqq)
    print('4')
except Exception as e:
    print(e)
else:
    print('没有异常')
finally:
    print('最终都会执行')


1
2
4
没有异常
最终都会执行

自定义错误类型

# 自定义异常类型:

class MyError(BaseException):  # 继承BaseException
    def __init__(self, msg):
        super(MyError, self).__init__(msg)
        self.msg = msg

    def __str__(self):  # 自定义显示信息
        return '出错啦'


raise MyError('错误')

#     raise MyError('错误')
# __main__.MyError: 出错啦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值