python入门19 异常及异常处理 异常捕获
Posted dinghanhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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!
以上是关于python入门19 异常及异常处理 异常捕获的主要内容,如果未能解决你的问题,请参考以下文章