python入门19 异常及异常处理 异常捕获
常见异常举例
""" 一些异常举例:""" '''模块不存在 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/0 except (ZeroDivisionError,NameError): print('出错了') #发生异常后执行的部分
#捕获任何类型的异常 import traceback try: x = 10/0 a except 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): pass name = 'abc' if name != 'abcd': raise userError('user error')
the end!
当情绪低落,烦躁的时候,学技术并整理成博客能忘却所有烦恼。技术改变心境。