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 相关文章推荐
python实现的一只从百度开始不断搜索的小爬虫
Aug 13 Python
python实现在sqlite动态创建表的方法
May 08 Python
python算法表示概念扫盲教程
Apr 13 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
python单例模式实例解析
Aug 28 Python
python dict 相同key 合并value的实例
Jan 21 Python
把pandas转换int型为str型的方法
Jan 29 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
Pytorch提取模型特征向量保存至csv的例子
Jan 03 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
python游戏开发之pygame实现接球小游戏
Apr 22 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之第七天
2006/10/09 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP可变变量学习小结
2015/11/29 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
python通过实例讲解反射机制
2019/10/17 Python
pygame实现非图片按钮效果
2019/10/29 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
一些Unix笔试题和面试题
2013/01/22 面试题
医学专业职业生涯规划范文
2014/02/05 职场文书
教师个人自我鉴定
2014/02/08 职场文书
优秀教师工作感言
2014/02/16 职场文书
学生评语大全
2014/04/18 职场文书
法定代表人身份证明书
2014/09/10 职场文书
升职自我推荐信范文
2015/03/25 职场文书
离婚民事起诉状
2015/08/03 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android