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中字典dict常用操作方法实例总结
Apr 04 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
python文件操作之目录遍历实例分析
May 20 Python
Python实现求最大公约数及判断素数的方法
May 26 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 Python
Python多线程获取返回值代码实例
Feb 17 Python
Python读取表格类型文件代码实例
Feb 17 Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 Python
Django-imagekit的使用详解
Jul 06 Python
python批量修改交换机密码的示例
Sep 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
Zend公司全球首推PHP认证
2006/10/09 PHP
需要发散思维学习PHP
2009/06/29 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
js初始化验证实例详解
2016/11/26 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
python实现单链表的方法示例
2019/09/03 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
艺术设计专业个人求职信范文
2013/12/11 职场文书
会务接待方案
2014/02/27 职场文书
搞笑车尾标语
2014/06/23 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
Python OpenCV快速入门教程
2021/04/17 Python
一级电子管军用接收机测评
2022/04/05 无线电
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS
postgresql中如何执行sql文件
2023/05/08 PostgreSQL