python筑基-(日志/异常/pychar虚拟环境配置)

异常
  • try与finally
""""""
"""
try...except 捕获异常,执行except代码块内容
try...finally
try;
   代码块
finally:
    无论是否发生异常,这里的代码都会执行
finally常见于关闭某些资源占用
"""
import logging
logging.basicConfig(level=logging.DEBUG)

def jsuan(m,n):
    try:
       result=m/n #除法有风险 除数不能为零
       return  result
    except Exception:
        logging.error("日志出错了")
        return "出现异常"
    finally:
        print("不管上面是否一异常,这里一定执行")

rs=jsuan(2,0)  #除数不能为零,执行异常处理
print(rs)

  • 异常描述
""""""
"""
异常:程序执行不下去了,中断当前程序,打印出异常信息
程序代码运行不了
世界不能发生的事
逻辑不通的情况

异常可以处理
捕获异常  try...except
try:
   代码块  (可能发生异常的代码)
except  需要捕获的具体异常名称(Exception):
   发生异常后,我要去做的事情
"""

import logging
logging.basicConfig(level=logging.DEBUG)
'''
try...except 执行逻辑:首先执行try中的代码块
如果没有异常,except代码块就不执行
而一旦发生异常,中断try中的代码
改为执行except代码

不会爆红 而是执行自定义的异常处理(except中的代码)
'''
def jsuan(m,n):
    try:
       result=m/n #除法有风险 除数不能为零
       return  result
    except Exception:
        logging.error("日志记录,出错了")
        return  "出现异常"


  • 断言
""""""
"""
断言机制:(关键字assert)用于判断某个表达式的结果是否为True
断言用于制造异常
如果表达式返回True 不做任何处理
如果不为True,直接抛出异常(中断程序,出红字)
语法: asscrt 表达式,异常提醒
表达式指的是-- a==b ,a>b,  a in b, a not b ...
asscrt后,只需要是一个有bool的返回结果,所以asscrt后面可以接逻辑
"""
# 举例
str="xiaoming"
print(str[0]=="h")
# assert str[0] == "h"
assert str[0] == "h","字符串第一个元素,期望是h,实际是{}".format(str[0])
日志
"""
日志可以封装成一个日志对象(类)
日志的面向对象
"""
import  logging
from logging import  handlers
class Logger(object):
    level_relation={
      "debug":logging.DEBUG,
        "info":logging.INFO,
        "warning":logging.WARNING,
        "error":logging.ERROR
    }
 #日志封装的常规写法,任何地方都可以通用,工作中可以直接复制——模板
   #fmt=... -日志的格式/格式化输出
    def __init__(self,filename,level='info',when='D',backCount=3,fmt='%(asctime)s -%(pathname)s[line:%(lineno)d] -%(levelname)s %(message)s'):
        self.logger=logging.getLogger(filename)
        format_str=logging.Formatter(fmt)#设置日志格式
        self.logger.setLevel(self.level_relation.get(level)) #设置日志级别
        sh = logging.StreamHandler() #向屏幕输出
        sh.setFormatter(format_str) #屏幕上要显示的内容
        th=handlers.TimedRotatingFileHandler(filename=filename,
              when=when,backupCount=backCount,encoding='utf-8')#往文件里面写入指定间隔时间自动生成文件的处理器
        th.setFormatter(format_str)#设置文件里面的写入格式
        self.logger.addHandler(sh) #logging
        self.logger.addHandler(th)

log=Logger("all.log",level="debug")
log.logger.debug("进行运行")
log.logger.info("警告")
log.logger.error("报错")
  • 日志与异常结合使用

先得吧日志文件与异常文件放入一个文件夹,然后进入日志文件,引入异常判断

""""""
"""
try...except 捕获异常,执行except代码块内容
try...finally
try;
   代码块
finally:
    无论是否发生异常,这里的代码都会执行
finally常见于关闭某些资源占用
"""
import logging
from  第十五节课.code.Logging import Logger




logging.basicConfig(level=logging.DEBUG)
log=Logger("all.log",level="debug")
def jsuan(m,n):
    try:
       result=m/n #除法有风险 除数不能为零
       log.logger.info("正常除法")  #如果出异常就不会出现这段日志
       return  result
    except Exception:
        log.logger.error("除法这里出错了,在21行,jsuan函数中")
        return "出现异常"
    finally:
        print("不管上面是否一异常,这里一定执行")

rs=jsuan(2,1)  #除数不能为零,执行异常处理
print(rs)

pychar虚拟环境配置

第一步:进入项目(pychar)—点击文件-点击设置-
在这里插入图片描述
第二步:点击项目-点击python解释器 -点击设置
在这里插入图片描述

第三步:点击conda环境—选择现有环境-选择你的解释器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小六妹妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值