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 异常及异常处理 异常捕获的主要内容,如果未能解决你的问题,请参考以下文章

Python 异常处理-Python零基础入门教程

Selenium入门19 捕获异常

Python入门 异常处理

14python异常处理及断言

Python入门到精通精品第八章 - 异常

Python入门教程第53篇 异常处理之try…except…finally