Python错误的处理方法


Posted in Python onJune 23, 2020

异常的捕获与处理

什么是错误

简而言之:还没运行,在语法解析的时候,就发现语法存在问题,这个时候就是错误。

什么是异常

简而言之:代码写好之后,无明显语法错误(这个时候,编辑器不知道有错,语法解析时也不知道有错),但是运行的时候,会发生错误,这个时候称之为异常。

什么是警告

import warnings

def fxn():
  warnings.warn("deprecated", DeprecationWarning)

异常怎么处理

异常的处理形式如下:

try:
  你要做的可能会发生异常的事
except 可能会发生的异常:
  发生异常之后要做的事
except 可能会发生的异常2:
  发生异常之后要做的事2
finally:
  最终要做的事情

比如下面的代码:

try:
  print(10/0)
except ZeroDivisionError:
  print("除数不能为0")

这个时候再次运行,就不会再出现异常

在平时的开发中,也会使用预定义清理的操作,来避免因为异常而导致程序奔溃,比如在进行IO操作的时候,可以使用:

with open("myfile.txt") as f:
  for line in f:
    print(line, end="")

这样一旦运行时发生异常,程序会自动帮你关闭文件,避免整个程序奔溃

自定义异常与异常的抛出

虽然python中提供了非常多的内置异常类,但是,在平时开发中,针对特定的业务,可能需要自定义异常,此时怎么办?

通过自定义继承Exception类的类,可以实现异常的自定义

class MyException(Exception):
  def __init__(self, parameter):
    err = '非法入参{0},分母不能为0'.format(parameter)
    Exception.__init__(self, err)
    self.parameter = parameter

当我们代码中碰到某种特殊业务情况,需要向调用方抛出自定义异常,可以使用 raise 关键字

from chapter12.my_exception import MyException

def my_fun(x):
  if x == 0:
    raise MyException(x)
  return 12/x

print(my_fun(-12))

我们在捕获异常之后,也可以直接将异常抛出,此时直接使用 raise 关键字即可

def my_func():
  try:
    print(10 / 0)
  except ZeroDivisionError:
    print("除数不能为0")
    # 此处直接将捕获的异常抛出
    raise

单元测试

什么是单元测试

  • 单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
  • 简而言之:就是写一段代码,用来验证另一段代码在特定情况下的正确性

单元测试的好处与“坏处”

  • 好处:减少bug、提高代码质量、可以放心重构(在未来修改实现的时候,可以保证代码的行为仍旧是正确的)
  • "坏处":占用开发时间,尤其是在起步阶段

在python中,如何编写单元测试

1、新建python文件,编写具体业务代码

class MyTest():
def my_add(self, a, b):


return a + b

2、右键类名,选择Go TO ==》test,或者直接 ctrl+shift +t

Python错误的处理方法

3、填写好相应的模块名及测试类名,点击ok,此时pycharm会帮我们自动创建测试模块及类

Python错误的处理方法

4、编写测试代码,并执行单元测试

import unittest
from unittest import TestCase
from test import MyTest

class TestMyTest(TestCase):
def test_add(self):
  s= MyTest()
  self.assertEqual(s.my_add(1,5),6)

if __name__ == "__main__":
unittest.main()

以上就是Python错误的处理方法的详细内容,更多关于Python错误处理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Flask SQLAlchemy一对一,一对多的使用方法实践
Feb 10 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
python实现windows下文件备份脚本
May 27 Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 Python
python 简单照相机调用系统摄像头实现方法 pygame
Aug 03 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
什么是python的函数体
Jun 19 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
Python编写万花尺图案实例
Jan 03 Python
python操作xlsx格式文件并读取
Jun 02 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 Python
python文件读取失败怎么处理
Jun 23 #Python
使用tensorflow根据输入更改tensor shape
Jun 23 #Python
pytorch 计算ConvTranspose1d输出特征大小方式
Jun 23 #Python
Android Q之气泡弹窗的实现示例
Jun 23 #Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 #Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 #Python
python如何查看安装了的模块
Jun 23 #Python
You might like
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
浅析Cookie中的Path与domain
2013/12/18 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
如何实现jdbc性能优化
2012/07/30 面试题
食品营养与检测应届生求职信
2013/11/08 职场文书
建筑设计师岗位职责
2013/11/18 职场文书
思想政治教育专业个人求职信范文
2013/12/20 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
中班教师个人总结
2015/02/05 职场文书
毕业生入职感言
2015/07/31 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers