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搭建简易服务器分析与实现
Dec 15 Python
python基础教程之字典操作详解
Mar 25 Python
详细解读Python的web.py框架下的application.py模块
May 02 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
python算法表示概念扫盲教程
Apr 13 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
Jan 29 Python
在django模板中实现超链接配置
Aug 21 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
python爬虫数据保存到mongoDB的实例方法
Jul 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
JS 网站性能优化笔记
2011/05/24 PHP
基于php权限分配的实现代码
2013/04/28 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
JS backgroundImage控制
2009/05/19 Javascript
Javascript倒计时代码
2010/08/12 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
python简单商城购物车实例代码
2018/03/15 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
Python猴子补丁知识点总结
2020/01/05 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
软件测试面试题
2014/01/05 面试题
《盘古开天地》教学反思
2014/02/28 职场文书
意向书范本
2014/07/29 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL