赞
踩
一:错误简述
在程序的运行过程中,总会遇到各种各样的错误。
程序中的错误:代码错误,即bug
用户输入错误:用户输入不正确的格式,如输入为空等
难以预测的错误:写入文件时磁盘满了写不进;从网络抓取数据,突然断网了
二:错误提示信息
三:错误处理
程序中的错误和用户输入错误要求写代码的程序员们自己去修复;对那些程序运行过程中难以预测的错误才应该使用python的异常处理机制。
出现错误时,错误会在程序中一级级往上报,直到碰到能处理该错误的异常处理机制,否则一直报到最上层,直至终止程序。
- # python异常处理机制
- try:
- #try代码块
- x = 4
- l = [1,2,3,4]
- y= l[x]
- print(x)
- # except (NameError,SyntaxError,IndexError): # 可以采用这种格式同时捕获多个异常类型
- # print('NameError or SyntaxError or IndexError')
- except NameError: # 捕获NameError错误;except的个数不固定,随需求而变
- print('NameError')
- except IndexError as error_value: # 使用 as 可以得到异常的值,接收值的变量名是自定义的
- print('IndexError:',error_value)
- except Exception as error_value: # 可以捕获任何异常
- print('万能异常',error_value)
- else: # 不能单独与try使用,即在else前必须有异常处理 except (可选)
- print('只在try代码块没有抛出异常的情况下执行')
-
- finally: # (可选)
- print('无论try代码块是否有异常,最后都会执行这里的代码')

- # 断言 用于代码调试的一种方法
- # x = 2
- # assert x<3,'x shoud lower 3' # x小于3时才能执行后面的代码,否则抛出异常,并打印异常提示信息
- # print(x)
- # raise 主动抛出异常
- while True:
- x=3
- y = input('>>:').strip()
- if y.isdigit():
- y = int(y)
- else:
- # raise ValueError('invalid value')
- raise #自己处理不了,把异常抛出去,让顶层调用者去处理
四:自定义错误类型
python中的错误类型也是一个类,其继承关系如下:
- # 自定义异常类型,继承自Exception
- class InputError(Exception):
- def __init__(self,error_info):
- super().__init__(self)
- self.error_info = error_info
- def __str__(self):
- return self.error_info
-
- if __name__ == '__main__':
- try:
- raise InputError('Invalid input')
- except InputError as error_value:
- print(error_value) #Invalid input
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。