常见异常举例
""" 一些异常举例:"""'''模块不存在 ModuleNotFoundError: No module named 'data' '''#import data1'''索引越界 IndexError: list index out of range '''li = [1,2]#li[3]'''key不存在 KeyError: 'a' '''dict1 = {}#dict1['a']''' NameError: name 'a' is not defined '''#a #未定义的变量'''缩进错误 IndentationError: expected an indented block '''# if 1:# return True #缩进错误'''语法错误 SyntaxError: invalid syntax '''#def fund x: return x''' 类型错误 TypeError: can only concatenate str (not "int") to str '''#'a' + 2''' 除数为0 ZeroDivisionError: division by zero'''#2/0''' 递归错误 未设置跳出条件 RecursionError: maximum recursion depth exceeded '''# def f(x):# return f(x)# f(1)
异常捕获 try except finally
"""异常捕获 try(可能发生异常的语句) except(发生异常后处理)else(没有发生异常后执行的语句) finally(不管有无异常都要继续执行的语句)不捕获,发生异常后后程序会中断执行。捕获异常,可根据异常进行处理"""
#捕获一种特定异常try: x = 10/0 print('x=',x) #异常后的不执行except ZeroDivisionError: print('除数不能为零') #发生异常后执行的部分else: print('没有除数异常') #没有发生异常后执行finally: x = 0 print('finally') #不管有无异常均一定会执行的部分
#捕获多种异常try: a x = 10/0except (ZeroDivisionError,NameError): print('出错了') #发生异常后执行的部分
#捕获任何类型的异常import tracebacktry: x = 10/0 aexcept BaseException as e: print(e) #仅显示异常信息 traceback.print_exc() #显示错误所在详细的堆栈信息print('后续程序继续执行')
抛出异常raise
"""抛出异常 raise 错误类型(错误信息)"""name = 'abc'if len(name) <= 6: raise ValueError('username必须大于6个字符')else: print('ok')
自定义异常
"""自定义异常类,继承自已有异常类"""class userError(BaseException): passname = 'abc'if name != 'abcd': raise userError('user error')
the end!