标签:error: 级别 停止 完成 form pyrhon 需要 事先 不同
异常:程序出现了意想不到的情况
如果异常不解决,程序会崩溃,停止运行
捕获异常,如果出现了异常,我们会让他们按照事先规定的规则去执行对应的操作(记录操作日志)
一、语法
try (要运行的有可能发生异常的代码):
代码
except (异常):
出现异常的时候要运行的代码(执行的操作),记录日志
# 一旦try当中的代码报错,会立即跳到except,下面的代码不会继续执行
str_1 = [‘python‘] try: print(str_1 [8]) print("是否会执行?") except: print(‘记录错误日志‘) print("代码完成") ‘‘‘ 结果: 记录错误日志 代码完成 ‘‘‘
# 如果try里面的代码没有出现异常,就不会执行except str_1 = [‘python‘] try: print(str_1 [1]) print("是否会执行?") except: print(‘记录错误日志‘) print("代码完成") ‘‘‘ 结果: y 是否会执行? 代码完成 ‘‘‘
好的程序员:知道什么代码需要放到try里面
a=4 b=1 print(a*b) #需不需要加异常处理? a=‘a‘ b=‘b‘ print(a*b) #如果事先不知道传入的是什么类型,则需要加异常处理 try: print(a*b) except: print(‘参数错误,记录日志‘)
try里面的语句调换顺序,报的错误就会不一样
同一个try不可能捕获两个异常的,如果遇到一个异常就直接执行except语句了
二、异常捕获的进阶版
指明出现的异常类型(先不要加异常,让他报错,将报错的类型记住,去异常捕获的时候,加入except语句中)
lst=[‘zjx‘] try: print(4/0) lst[3] except IndexError as e: print(‘出现异常:{}‘.format(e)) except ZeroDivisionError as e: print(‘出现除法错误:{}‘.format(e)) finally: #不管有没有报错,finally都会执行的 print(‘hello world‘)
三、raise
手动抛出异常,让程序报错
def join_team(age,gender): if age > 22: raise ValueError(‘年龄要小于22‘) print(‘可以加入team‘) print(join_team(23,‘girl‘)) ‘‘‘ 结果: ValueError: 年龄要小于22 ‘‘‘
四、常见的异常类型:
ImportError:无法引入模块或包
IndexError:下标索引超出序列边界
NameError:使用一个还未赋予对象的变量
SynataxError:代码逻辑语法出错,不能执行,不能去捕获
TypeError:传入的对象类型与要求不符
ValueError:传入一个不被期望的值,即使类型正确
KeyError:试图访问你字典里不存在的键
IOError:输入输出异常,文件操作
1)SyntaxError:语法错误
try: ldljsdjlg‘khkhkh‘ except: print(‘语法错误‘) #结果显示错误,不能捕获异常 ‘‘‘ ldljsdjlg‘khkhkh‘ ^ SyntaxError: invalid syntax ‘‘‘
2)KeyError
dict1 = {‘1‘:‘zjx‘,‘2‘:‘hauhau‘} print(dict1[‘3‘]) ‘‘‘ print(dict1[‘3‘]) KeyError: ‘3‘ ‘‘‘
3)IndexError
lst1 = [1,2,3,4,5] print(lst1[5]) ‘‘‘ print(lst1[5]) IndexError: list index out of range ‘‘‘
五、异常分组
发现了一个严重级别,阻塞级别的bug(短信通知相关人员赶紧集合的代码),一个轻微级别的bug(记录日志的代码)
针对不同的组进行不同的操作
try: 1 / 0 [‘hello‘][3] {‘name‘:‘pyrhon‘}[‘age‘] except (IndexError,KeyError) as e: ‘短信通知这里出现很严重的问题‘ print(‘可以捕获IndexError和KeyError‘) except ZeroDivisionError as e: ‘记录日志‘ print(‘除法出现异常{}‘.format(e))
标签:error: 级别 停止 完成 form pyrhon 需要 事先 不同
原文地址:https://www.cnblogs.com/zhangjx2457/p/13634469.html