1.异常的抓取
1.1异常的概念
- 使用异常前:
print(1/0)
- 使用异常后:错误提示更加友好,不影响程序继续往下运行
try:
print(10/0)
except ZeroDivisionError:
print("0不能作为分母")
1.2异常的抓取
第一种:如果提前知道可能会抛出哪些异常,可以直接写出要抓取的异常名称
try:
number1=int(input("请输入一个整数:"))
print(1 / number1)
except ZeroDivisionError:
print("0不能作为分母")
except ValueError:
print("您输入的不是整数")
except://不知道还会出现哪些异常时,可以抓取任何异常进行兜底
print("程序出现异常")
第二种:抓取任何异常
try:
number1=int(input("请输入一个整数:"))
print(1/number1)
except Exception as e:
print(e)
2.else与finally-都只出现一次
else:没有出现异常会执行
finally:不管有没有异常都会执行
try:
number1=int(input("请输入一个整数:"))
print(1/number1)
except Exception as e:
print(e)
else:
print("程序运行完毕,未出现异常")
finally:
print("程序执行完毕")
3.常见的异常
所有的异常,都是Exception的子类或者子类的子类
print(NameError.__base__)# <class 'Exception'>
print(IndexError.__base__.__base__)# <class 'Exception'>
print(FileNotFoundError.__base__.__base__)# <class 'Exception'>
自定义异常类,继承Exception类
- NameError,变量没有定义直接使用
- IndexError下标越界
- FileNotFoundError找不到文件,路径不对
4.手动抛出异常
try:
raise IOError
except IOError:
print("出现IO异常")
4.loguru日志模块
(1)工作中通常将将异常写入日志中
(2)loguru是一个python 第三方库,是较为常用的日志模块
pip install loguru -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
from loguru import logger
5.日志的级别
- debug<info<warning<error<critical(崩溃,致命)
- 不同级别日志,颜色不同
from loguru import logger
# 日志级别
logger.debug('log')
logger.info('log')
logger.warning('log')
logger.error('log')
logger.critical('log')
6.logger.add()
loguru模块可以配置各种参数
import os
if not os.path.exists('./log'):#如果当前路径下没有log目录,则新建
os.mkdir('./log')
logger.remove(handler_id=None)#不在控制台打印
logger.add('./log/log1.log',
rotation='200KB',
compression='zip',
encoding='utf-8')
for i in range(10000):
logger.warning('===warning.log===')
logger里边写入异常信息:
import os
if not os.path.exists('./log'):#如果当前路径下没有log目录,则新建
os.mkdir('./log')
logger.remove(handler_id=None)#不在控制台打印
logger.add('./log/log1.log',
rotation='200KB',
compression='zip',
encoding='utf-8')
try:
number1=int(input("请输入一个整数:"))
print(1 / number1)
except ZeroDivisionError as e1:
logger.error("0不能作为分母")
except ValueError as e2:
logger.error("您输入的不是整数")
except Exception as e3:
logger.error("程序出现异常0")
7.
handle_loguru.py
只记level=error以上的日志,error,critical
handle_path.py
loguru.ini