今天的内容比较少,只是单独的异常处理python
开始今日份整理程序员
1.异常spa
定义:异常时错误发生的信号,一旦出错,而且程序没有处理这个错误,就会抛出异常,而且程序会运行停止code
2.异常的分类blog
2.1语法错误:python会在运行以前,会先检查语法是否错误,这个是程序员代码中不该该出现的,须要时刻注意ip
2.2逻辑错误:(常见)input
3.异常的处理io
第一种方式:单分支机构,try………except………class
try: l1 = [1,2,3] l1[100] # IndexError print(333) print(5555) # dic = {'key1':'v1'} # dic['key2'] # KeyError print(777) except IndexError as e: print(e)
第二种方式:多分支机构,try .except except ....多支语法
try: l1 = [1,2,3] # l1[100] # IndexError print(333) print(5555) dic = {'key1':'v1'} # dic['key2'] # KeyError num = int(input('请输入选项:')) print(777) except IndexError as e: print(e) except KeyError as e: print(e)
第三种方式:万能异常 Exception
try: l1 = [1,2,3] # l1[100] # IndexError print(333) print(5555) dic = {'key1':'v1'} # dic['key2'] # KeyError num = int(input('请输入选项:')) print(777) except Exception as e: print(e)
# 以上这三种分状况讨论:
# 1,若是你对报错信息不关系,只是想直接跳过报错而不分流执行代码。 万能异常最好。
# 2,若是你想要捕捉具体的错误信息,根据不一样的错误执行不一样的分支。多分支比较好
第四种方式:多分支加万能异常
try: num = input('请输入你要办理的业务:').strip() num = int(num) menu_dict[num]() except ValueError: print('请输入数字') except KeyError: print('超出范围,请从新输入') except Exception: print("出现未知错误.....")
第五种方式,主动触发异常,以前有用过,
try: raise TypeError('类型错误') except Exception as e: print(e)
第六种方式,断言,代码完成有明确的结果
assert ('name' in info)and ('age' in info) #有着明确的结果
第七种方式,自定义异常类型,
毕竟异常的种类不是一成不变的,有可能异常的种类仍是一直在增长,这个时候就须要本身建立一个异常种类了
class PhoneconnectionError(BaseException):#手机链接失败 pass try: raise PhoneconnectionError('链接错误...') except PhoneconnectionError as e: print(e)
最后的最后,在代码中尽可能少用try开头,except 结尾,这样根本看不到本身的代码有什么问题。