异常异常处理断言
Posted nealxyz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常异常处理断言相关的知识,希望对你有一定的参考价值。
一、异常
# help(BaseException) # help():一个帮助类,查看帮助信息。回车键继续,q键退出。
# Python中所有的异常,都是继承自 BaseException 类,其直接分为四大类:
# 1.SystemExit:Python 退出异常
# 2.KeyboardInterrupt 键盘打断
# 3.GeneratorExit 生成器退出
# 4.Exception 普通异常(只会使用这部分的异常)
# 异常都是类
# 错误回溯
# 查看报错要查看报错原因、报错的行,以及执行的代码,通过错误回溯,可以直接查看到这些内容
# 异常分为两种:1、语法错误 2、普通异常
# 在程序代码执行之前会先检查一遍语法错误,如果语法没有问题,才会去运行代码,如果语法有问题,代码就不会执行
二、异常处理
try...except...
# 让出现异常后,程序还能继续运行,减少异常带来的损失
try: # 这里面放可能出问题的代码
a = 1 + ‘123‘
b = (5/0)
print(123)
except TypeError as e: # 下面写捕获到异常的处理方案
print(‘老哥有问题‘,e.__class__.__name__) # __class__和__name__是特殊属性,不是私有属性
print(e) # 上面打印出错误类型,本行是打印错误内容
except NameError as e:
print(e)
except IndexError:
pass
except Exception as e: # Exception 包含了所有的错误类型,最后加上这条,就可以抓住所有的异常了
print(e) # 代码中出现的异常都是 Exception的子类 但语法错误是抓不到的,
# 因为程序运行前先检查语法错误,没有语法问题后才运行程序。
else: # try下面没有代码错误,执行else里的内容
print(‘没事没事‘)
finally: # 无论try里面有没有异常,都会执行这里的内容
print(‘啦啦啦‘)
b = ‘赚了十万‘
print(b)
# 第二种捕获多种错误的方法:在except(TypeError,NameError,...)的里面放多种错误的类名。
# try...except...的运行逻辑,类似于if...else...的逻辑,因此在捕获过程中,会从上到下依次对比异常,
# 找到后就不会再往下查找了。因此上面例中没有出现除数为0的错误。
# 自定义异常
class MyError(Exception):
pass
try:
a = 1 + 1
raise MyError # 关键字 抛出异常 这里是主动抛出自定义异常
except MyError as e:
print(e.__class__.__name__)
print(‘哈哈哈‘)
三、断言 assert
断言语句是讲调试断言插入程序的一种便捷方式
a = 1
b = 2
assert a == b,‘报错了‘ # 关键字 可用于断点调试 表达式False报AssertionError的错误类型。
print(‘123‘)
四、拓展
# 1. 返回布尔类型的表达式:
if True: # True 非0、非空;0 [] () {} set() ‘‘ None等一些空的东西的值都为Fasle
print(‘True‘)
else:
print(‘False‘)
‘‘‘
# 2. if__name__ == ‘__main__‘
class A:
pass
print(A) # 这里输出的是文件本身
if __name__ == ‘__main__‘: # 判断name是不是本身这个文件的名字
print(123)
# 模块 就是py文件
import test # 模块在导入的时候会运行一遍 如果不希望这样的结果,
# 可以用__name__ == ‘__main__‘语句来做判断,写在被导入的文件中,起到保护作用。
print(‘啦啦啦‘)
以上是关于异常异常处理断言的主要内容,如果未能解决你的问题,请参考以下文章