制心一处,无事不办

一.什么是异常

_’’’
异常简单理解就是非正常,没有达到预期目标
异常是一个事件,并且这个异常事件是在我们程序员运行过程中出现,会影响我们程序的正常执行

异常分两种:
1:语法错误导致的异常
2:逻辑错误导致的异常

如何处理异常?
1:如果错误发生的情况是可以预知的,那么可以使用流程控制进行预防处理
2:如果错误的发生条件不可预知,就可以使用try except,在错误发生时进行处理
语法:
try:
可能出现异常错误的代码
except:
如果发生异常则进入except代码块进行处理
‘’’_

二.try-except详解

①指定异常

try:
s=‘hello’
int(s)
except ValueError as e:
print(e)

②多分支处理异常

try:
s=‘hello’
s[50]
except IndexError as e:
print(‘IndexError’,e)
except KeyError as e:
print(‘KeyError’,e)
except ValueError as e:
print(‘ValueError’,e)

③通用异常类

try:
s=‘hello’
int(s)
except Exception as e:
print(‘Exception’,e)

④多分支加通用异常

try:
s=‘hello’
s[50]
except IndexError as e:
print(‘IndexError’,e)
except KeyError as e:
print(‘KeyError’,e)
except ValueError as e:
print(‘ValueError’,e)
except Exception as e:
print(‘Exception’, e)

⑤try except else

try:
s=‘hello’
s[50]
except IndexError as e:
print(‘IndexError’,e)
except KeyError as e:
print(‘KeyError’,e)
except ValueError as e:
print(‘ValueError’,e)
except Exception as e:
print(‘Exception’, e)
else:
print(‘没有引发异常时,执行’)

⑥try except else finally

try:
s=‘hello’
s[50]
except IndexError as e:
print(‘IndexError’,e)
except KeyError as e:
print(‘KeyError’,e)
except ValueError as e:
print(‘ValueError’,e)
except Exception as e:
print(‘Exception’, e)
else:
print(‘没有引发异常时,执行’)
finally:
print(‘无论是否异常,都会执行’)

三.自定义异常处理类

在出现异常后,对异常进行处理,并且把异常信息写入日志
日志的基本格式:
日期时间 异常的级别
异常信息:引发的异常类,异常的信息,文件及行号

##自定义异常日志处理类 *
class MyException():
def init(self):
import logging
import traceback

  1. _#logging的基本配置<br /> _logging.basicConfig(<br /> filename=**'./error.log'**,_#日志存储的文件目录<br /> _format=**'%(asctime)s %(levelname)s \n %(message)s'**, _#格式化存储的日志格式<br /> _datefmt=**'%Y-%m-%d %H:%M:%S'<br /> **)<br /> _#写入日志<br /> #会出现乱码情况: 去logging中修改FileHandler的参数,编码格式改为utf-8即可解决<br /> _logging.error(traceback.format_exc())

#使用自定义异常类
try:
int(‘hello’)
except:
MyException() #在此处调用自定义异常处理类