class MyException(Exception): # 自定义异常类,继承自Exceptionpass# raise MyException("这是用户定义的异常") # 触发自定义异常
try: # 捕捉异常raise MyException("这是用户定义的异常") # "这是用户定义的异常"是个message
except MyException as e: # e就是MyExcetion的一个对象print(e)# assert断言的使用assert(1 == 1) # 这样不会报错
assert(1 == 0) # 报错AssertionErrordef demo(x, y):return x + yprint(demo(1, 2)) # 3
assert(demo(1, 2) == 3) # 不会报错
assert(demo(1, 2) == 4) # 报错AssertionError# try...except...else...语句的使用和finally"""
try:执行代码
except:如果有异常发生,执行此处的代码
else:如果没有异常发生,执行此处代码
finally: (有的代码需要这个关键字)不管有没有异常都会执行此处代码"""def my_interaction():raise MyException('这是用户定义的异常2')try:my_interaction()
except MyException as error:print(error) # 这是用户定义的异常2
else:print('Executing the else clause') # 因为异常发生,所以这句话不会执行try:my_interaction()
except MyException as error:print(error) # 这是用户定义的异常2
else: # 如果异常发生,会打印error,而else语句不会执行try:with open('file.log') as file:read_data = file.read()except FileNotFoundError as fnf_error:print(fnf_error)
finally: # 不管异常是否发生,都会执行print('清理工作') # 清理工作