异常处理

介绍

什么是异常?
程序在运行过程中出现了不可预知的错误
并且该错误没有对应的处理机制,那么就会以异常的形式表现出来
造成的影响就是整个程序无法再正常运行

异常的结构
1.异常的类型:NAMEERROR
2.异常的信息:name 'fdsdfsdf' is not defined
3.异常的位置:Traceback (most recent call last):

异常类型

  • 语法错误

SyntaxError
语法错误应该在程序运行前就修正
  • 逻辑错误

1.NameError : 未定义
2.IndexError : 容器类型取不存在的值时
3.AttributeError : 对象取不存在的属性时
4.KeyError : 用一个不存在的键取值时
5.ZeroDivisonError : 1/0
6.TypeErroe : 类型错误
7.ValueError

处理异常

  • 能确定异常类型

try用来捕捉异常,当捕捉的代码块的错误类型与except指定的错误类型一致时,代码会继续运行

except有elif的相似功能,用来判断多种异常类型

try:
    可能报错的代码块
except 错误类型 as e:  # e是错误信息
    代码块
  • 不能确定异常类型

Exception是万能异常,可以匹配任何的异常类型

try:
    可能报错的代码块
except Exception as e:  # e是错误信息
    代码块
  • 其他

try:
    代码块
except 错误类型1 as e:
    代码块1
except 错误类型2 as e:
    代码块2
else:
    没有异常时触发的代码块
finally:
    有没有异常都会触发的代码块

主动抛出异常

if 条件:
    raise 错误类型

断言 assert

aassert 相当于 if + raise

traceback模块

问题: python 报错信息被Exception as  e接住 怎么查看报错信息

解决:

import traceback
try:
    1111 - aaa
    raise  Exception
except Exception as e:
        print(e.__repr__(),traceback.print_exc())


>>>:
NameError("name 'aaa' is not defined",) None
Traceback (most recent call last):
  File "D:/study/学习代码/flask_test1/s1.py", line 76, in <module>
    1111 - aaa
NameError: name 'aaa' is not defined

 

自定义异常类型

class MyException(BaseException):
    def __init__(self, msg):
        super().__init__()
        self.msg=msg
    def __str__(self):
        return '%s' %self.msg
raise MyException('类型错误')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值