python断言和C/C++的用法相同,true正常,false错误,例如下面的python代码
assert(False)
assert 1==1 # 条件为 true 正常执行
assert 1==2 # 条件为 false 触发异常
二 异常
例如,常见的0做除数,会出现异常 a = 2 / 0
异常信息
Traceback (most recent call last):
in
a = 2 / 0
ZeroDivisionError: division by zero
抛出异常
Python 使用 raise 语句抛出一个指定的异常。raise语法格式如下:
x = 10
if x > 5:
raise Exception('x 不能大于 5。x 的值为: {}'.format(x))
输出信息
raise Exception('x 不能大于 5。x 的值为: {}'.format(x)) Exception: x 不能大于 5。x 的值为: 10
异常的格式:
try......except......raise
例如打开文件异常,Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
import sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Could not convert data to an integer.")
except:
print("Unexpected error:", sys.exc_info()[0])
raise
如果没有myfile.txt将会出现异常,输出如下:
OS error: [Errno 2] No such file or directory: 'myfile.txt'
三 用户自定义异常你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,例如:
class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
测试代码
try:
raise MyError(2*2)
except MyError as e:
print('My exception occurred, value:', e.value)
结果:
My exception occurred, value: 4