码迷,mamicode.com
首页 > 编程语言 > 详细

python入门19 异常及异常处理 异常捕获

时间:2018-11-18 23:07:44      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:错误类型   程序   port   ror   rac   异常类   syntax   inf   模块   

 

常见异常举例

""" 一些异常举例:"""

‘‘‘模块不存在 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 异常及异常处理 异常捕获

标签:错误类型   程序   port   ror   rac   异常类   syntax   inf   模块   

原文地址:https://www.cnblogs.com/dinghanhua/p/9980179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!