6.Python学习:异常和日志

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
在这里插入图片描述

相关推荐

  1. python异常

    2024-07-09 22:34:04       50 阅读
  2. muduo异步

    2024-07-09 22:34:04       33 阅读
  3. clickhouse批量入库异常

    2024-07-09 22:34:04       39 阅读
  4. 谷粒商城学习

    2024-07-09 22:34:04       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 22:34:04       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 22:34:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 22:34:04       43 阅读
  4. Python语言-面向对象

    2024-07-09 22:34:04       54 阅读

热门阅读

  1. 使用工业自动化的功能块实现大语言模型应用

    2024-07-09 22:34:04       22 阅读
  2. Linux 内核编译与模块开发:深入掌握系统核心

    2024-07-09 22:34:04       24 阅读
  3. CUDA Kernel调试与优化--背景知识扫盲(LLM生成)

    2024-07-09 22:34:04       15 阅读
  4. C语言希尔排序详解与实例

    2024-07-09 22:34:04       20 阅读
  5. 多尺度旋转编码

    2024-07-09 22:34:04       19 阅读
  6. PostgreSQL的使用

    2024-07-09 22:34:04       17 阅读