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映射拆分操作符用法实例
May 19 Python
python 打印出所有的对象/模块的属性(实例代码)
Sep 11 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
Python实现带参数与不带参数的多重继承示例
Jan 30 Python
python购物车程序简单代码
Apr 18 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
python实现udp传输图片功能
Mar 20 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
Python 语言实现六大查找算法
Jun 30 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设置session值和cookies的学习示例
2014/03/21 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
python 对key为时间的dict排序方法
2018/10/17 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
python中spy++的使用超详细教程
2021/01/29 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
应届毕业生应聘自荐信范文
2014/02/26 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
奶茶店创业计划书
2014/08/14 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
MySQL基于索引的压力测试的实现
2021/11/07 MySQL