异常处理,约束,MD5加密,日志处理

1,异常处理

一般的异常处理说的是抛异常和处理异常

  • 异常处理从产生异常开始
    语法:

    抛异常:产生异常raise Exception("")
  • 处理异常
    语法:
    处理异常try:    操作except Exception as e:    异常父类,可以捕获所有异常else:    保护不抛出异常的代码,当try中午异常的时候执行finall:    最后总要执行我
  • 自定义异常类,只需要继承Exception
    语法:
    自定义异常class Gandererror(Exception):    pass

处理异常用法:

 1 import  traceback #导入一个包,获取错误堆栈信息
 2 #一个加法的函数,只能算整数,其他数据类型抛出异常
 3 def add(a,b):
 4     if type(a) != int or type(b) != int:
 5         raise TypeError("不是整数")
 6     else:
 7         return a+b
 8 #捕获异常并处理
 9 try:
10     c = add(10,"s")
11 except TypeError as e:
12     print(e)
13     val = traceback.format_exc()
14     print(val)

2,约束

约束是对子类进行的约束1   通过抛异常(简单,Python适用)    在父类中给出一个方法,    这个方法什么都不写,就抛异常NotImplementError()    在子类中把上述方法进行重写
 1 class Animal(object):#父类中的方法抛异常
 2     def chi(self):
 3         raise NotImplementedError()
 4 class Cat(Animal):#子类有重构方法
 5     def chi(self):
 6         print("好看的吃")
 7 class Dog(Animal):#子类没有重构方法
 8     def chisi(self):
 9         print("吃的真香")
10 def chi(obj):
11     obj.chi()
12 c = Cat()
13 d = Dog()
14 chi(c)#这个能执行
15 chi(d)#这个不能执行

2   抽象类和抽象方法  接口:类中都是抽象的方法    from abc import ABCMeta,abstractmethod    抽象方法:抽象方法不用给出方法体,就写个pass就行了    抽象类:        类(metaclass=ABCMeta)        概念:如果类中包含抽象方法,这个类一定是抽象类        特点:抽象类一般不创建对象             抽象类中可以存在正常方法    可以约束子类必须实现抽象方法  

3,MD5加密

MD5加密:    不可逆    引入模块 hashlib  为了防止撞库,可以加密的时候加点料

使用:

 1 import hashlib
 2
 3 obj = hashlib.md5()
 4 #obj = hashlib.md5(b‘afnchannednaa‘)
 5 obj.update("shuai".encode(encoding="utf-8"))
 6 mi = obj.hexdigest()
 7 print(mi)
 8
 9
10 运行结果:
11 0e0e07a286355994d72085e8ce9761cd

4,日志处理

日志处理(重要,简单)    引入logging模块
  • 基本配置

     1 import logging
     2 logging.basicConfig(filename=‘app.log‘,#文件名,创建在同一目录下面
     3                     format=‘%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s‘,
     4                     #格式化时间,对应下面的datefmt,
     5                     #用户
     6                     #日志等级名
     7                     #模块,即文件名
     8                     #信息,调用写入
     9                     datefmt=‘%Y-%m-%d %H:%M:%S‘,
    10                     level=40)
    11                          #CRITICAL = 50
    12                         #日志级别
    13                         #FATAL = CRITICAL
    14                         #ERROR = 40
    15                         #WARNING = 30
    16                         #WARN = WARNING
    17                         #INFO = 20
    18                         #DEBUG = 10
    19                         #NOTSET = 0
    20
    21
    22 logging.critical("我是critical")
    23 logging.error("我是error")
    24 logging.warning("我是警告")
    25 logging.info("我是基本信息")
    26 logging.debug("我是调试")
    27 logging.log(2, "我是自定义")
    28     
  • 简单应用
     1 import traceback,logging
     2
     3 logging.basicConfig(filename=‘app.log‘,#文件名,创建在同一目录下面
     4                     format=‘%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s‘,
     5                     #格式化时间,对应下面的datefmt,
     6                     #用户
     7                     #日志等级名
     8                     #模块,即文件名
     9                     #信息,调用写入
    10                     datefmt=‘%Y-%m-%d %H:%M:%S‘,
    11                     level=40)
    12                         CRITICAL = 50
    13                         日志级别
    14                         FATAL = CRITICAL
    15                         ERROR = 40
    16                         WARNING = 30
    17                         WARN = WARNING
    18                         INFO = 20
    19                         DEBUG = 10
    20                         NOTSET = 0
    21 #抛出异常,通过处理异常,捕获异常写入日志
    22 for i in range(20):
    23     try:
    24         if i % 3 == 0:
    25             raise FileNotFoundError("我是FileNotFountException")
    26         elif i % 3 == 1:
    27             raise StopIteration()
    28         elif i % 3 == 2:
    29             raise KeyError()
    30
    31     except FileNotFoundError as e:
    32         val = traceback.format_exc()
    33         logging.error(val)
    34     except StopIteration as e:
    35         val = traceback.format_exc()
    36         logging.error(val)
    37     except KeyError as e:
    38         val = traceback.format_exc()
    39         logging.error(val)
    40     except Exception as e:
    41         val = traceback.format_exc()
    42         logging.error(val)
  • 多个日志文件写入,类似于Nginx中的access.log和error.log
     1 import logging
     2
     3 # 创建?个操作?志的对象logger(依赖FileHandler)
     4 file_handler = logging.FileHandler(‘l1.log‘, ‘a‘, encoding=‘utf-8‘)
     5 # 设置日志文件内容的格式
     6 file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"))
     7 logger1 = logging.Logger(‘A‘, level=40)
     8 logger1.addHandler(file_handler)
     9 # 记录日志
    10 logger1.error(‘我是A系统‘)
    11
    12 # 再创建?个操作?志的对象logger(依赖FileHandler)
    13 file_handler2 = logging.FileHandler(‘l2.log‘, ‘a‘, encoding=‘utf-8‘)
    14 file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s"))
    15 logger2 = logging.Logger(‘B‘, level=40)
    16 logger2.addHandler(file_handler2)
    17 # 记录日志
    18 logger2.error(‘我是B系统‘)

原文地址:https://www.cnblogs.com/shuai-aoli/p/10987170.html

时间: 2024-10-10 01:24:55

异常处理,约束,MD5加密,日志处理的相关文章

Python基础20_类的约束,异常处理,MD5加密,日志

一. 类的约束 约束程序的结构, 在分配任务之前就应该把功能定义好, 然后分别交给底下的程序员来完成相应的功能 在python中有两种办法来解决这样的问题 1. 提取父类, 然后在父类中定义好方法, 在方法中抛出一个异常, 这样所有继承父类的子类都必须重写这个方法, 否则访问的时候就会报错 class Base: def login(self): raise NotImplementedError   # 没有被实现错误, 要求子类必须重写login方法 , 不然抛出异常 class User(

Python 约束 , 自定义异常 , 加密 , 日志

约束 约束 , 约束其派生类:  保证派生类中必须编写send方法 , 不然执行可能就会报错 Python中  语法: 1 class BaseMessage(object): 2 def send(self): 3 """" 4 必须继承BaseMessage,然后其中必须编写send方法, 用于完成具体业务 5 """ 6 raise NotImplementedError(".send()必须被重新写") 7

Python面向对象(约束,异常处理,md5加密)(五)

1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError class Base: def login(self): raise NotImplementedError("没有实现登录") class Person(Base): def login(self): print("正常使用") class SpecialPerson(Base): def denglu(self): print("非正常"

使用Jmeter测试MD5加密接口性能测试实战

性能测试过程中,有时候会遇到需要进行加解密的接口,下面我就来介绍如何针对MD5加密接口进行性能测试 1.首先找开发了解需求,知道是一个http类型的post请求,需要对请求的applianceId参数进行MD5加密处理,然后把该参数输入到sign,最后发起请求给服务器 2.我们需要做的就是问开发难道MD5加密函数(java),然后通过jmeter的前置处理器BeanShell PreProcessor,就可以实现该效果 3.由于applianceId也需要参数化,所以需要使用CSV数据文件处理进

MD5加密和RSA加密

1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能:     ①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    ②.不同的输入得到的不同的结果(唯一性):    ③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,不能解密:  MD5的用途:     1.防止被篡改:    1)比如发送一个电子文档,发送前,我先得到MD5的

【iOS】MD5加密与网络数据安全

在做网络应用程序的时候, 时时刻刻要保证用户数据的安全, 因此要加密. MD5算法在国内用的很多. MD5算法的特点: *同样的数据加密结果是一样的.(32个字符) *不可逆的.(不能逆向解密) *可用于文件校验/指纹识别. MD5算法是公开的,iOS中已经包装好了MD5算法. 可以将其写成字符串的分类: - (NSString *)md5String { const char *string = self.UTF8String; int length = (int)strlen(string)

callback和spring的MD5加密

在javaweb中今天学习到了callback,即回调的意思,刚开始没听懂后面就明白了.回调的意思就是返回来调取页面. 举个例子:当我们访问淘宝网站的时候,当点击购物车的时候,这个时候提示用户登录用户名和密码,登录成功后,会返回到购物车的页面.这就是回调. 它不返回淘宝的首页,而是返回到我们点击的内容所在页面. 在写接口的时候,因为接口是供其他程序调用的,有可能会用到回调的功能,所以一般接口就要求将内容写的全面些.对callback进行包装下. sping的MD5加密: 之前对注册密码的加密是采

iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的数据加密的时候遇到了一些问题.起初采取的方案是DES加密,老大说DES加密是对称的,网络抓包加上反编译可能会被破解,故采取RSA方式加密.RSA加密时需要公钥和私钥,客户端保存公钥加密数据,服务器保存私钥解密数据.(iOS端公钥加密私钥解密.java端公钥加密私钥解密,java端私钥加密公钥解密都容易做到,iOS不

C# 字符串md5加密成16位和32位

#region md5加密 /// <summary> /// MD5 16位加密 加密后密码为小写 /// </summary> /// <param name="ConvertString"></param> /// <returns></returns> private string GetMd5Str16(string ConvertString) { try { using (MD5CryptoServi