12.异常异常处理断言推导表达式

Posted lyh-520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12.异常异常处理断言推导表达式相关的知识,希望对你有一定的参考价值。

         异常         

 

异常本身是类的实例

一、异常

>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name a is not defined
>>> a === 2
  File "<stdin>", line 1
    a === 2
        ^
SyntaxError: invalid syntax
>>> a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name a is not defined

二、Python的异常结构 (基于继承)

在 Python 中所有的异常都是继承自 BaseException 直接分为四大类:

1、SystemExit:Python退出异常

2、KeyboardInterrupt: 键盘打断(Ctrl+C)

3、GeneratorExit: 生成器退出(下次课再讲)

4、Exception: 普通异常(只会使用这部分的异常)

三、错误回溯

技术分享图片

     异常处理      

 1、基本的 try … except …

技术分享图片

2、捕获具体的异常捕获多种异常

技术分享图片

3、关于 Exception 及其 子类 的解释

技术分享图片技术分享图片

4、更加丰富的结构

代码中会出现的异常都是 Exception 的子类, 因此在 except 中只需要在最后加上 Exception 即可

在捕获异常的过程中,会从上倒下依次对比异常,找到之后就不会再往后查找

 

try:
    print("-------------1------------")    #有可能出错的代码
    print(c)
    print("------------2-------------")
except NameError as info:   #在这里用as 将捕获到的异常 用一个变量保存
    print("捕获到了异常,会执行我下面的代码对异常进行处理")
    print(info)  #把捕获的信息返回出去
else:
    print("没有捕获到异常执行我")
finally:
    print("不管有没有异常都会执行我")

# 注意事项:
# 1. try       下面放可能出错的代码
# 2. except  try下面的代码出错后,会执行except下面的代码
# 3. else      try下面代码没有错误,执行else下面的代码
# 4. finally 不管try下面的代码有没有出错,始终都会执行

-------------1------------
捕获到了异常,会执行我下面的代码对异常进行处理
name c is not defined
不管有没有异常都会执行我

 

5、扩展(自定义异常类型)

class MyError(Exception):    #自定义异常必须继承于Exception
    pass
raise MyError 


try:
    raise NameError          #主动抛出异常
except NameError:
    print("报错了")
#raise 主动抛出异常
# 格式:raise 异常类型
# 注意:raise  是主动抛出后面写的异常类型

         断言         assert

assert 1 == 1      #条件成立往下运行 条件不成立报错
print("======================")

# 断言语句是将调试断言插入程序的一种便捷方式
# assert 的语法规则是:
# 表达式返回 True  不报错
# 表达式返回 False  报错  报 AssertionError     #断言错误

    推导表达式    

 一、列表推导

技术分享图片技术分享图片

 

二、集合和字典推导

技术分享图片

 

以上是关于12.异常异常处理断言推导表达式的主要内容,如果未能解决你的问题,请参考以下文章

(69)Python异常处理与断言

Kotlin 异常处理之 OptionEitherResult

python_异常处理_断言

python之异常处理,断言和反射

使用 XUnit 断言异常

断言与异常