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实现在pandas.DataFrame添加一行
Apr 04 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
django的csrf实现过程详解
Jul 26 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 Python
Python使用protobuf序列化和反序列化的实现
May 19 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
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
sina的lightbox效果。
2007/01/09 Javascript
cssQuery()的下载与使用方法
2007/01/12 Javascript
js form action动态修改方法
2008/11/04 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
JS继承用法实例分析
2015/02/05 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
python生成指定长度的随机数密码
2014/01/23 Python
Python类的多重继承问题深入分析
2014/11/09 Python
python服务器与android客户端socket通信实例
2014/11/12 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
AOP的定义以及作用
2013/09/08 面试题
小学生班会演讲稿
2014/01/09 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
股东合作协议书
2014/09/12 职场文书
工作自我推荐信范文
2015/03/25 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
centos7安装mysql5.7经验记录
2022/05/02 Servers