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文件和目录操作方法大全(含实例)
Mar 12 Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
django 自定义过滤器的实现
Feb 26 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
简单了解Python3里的一些新特性
Jul 13 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
django 装饰器 检测登录状态操作
Jul 02 Python
Python如何进行时间处理
Aug 06 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作为网站开发语言的原因分享
2012/01/03 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
js window.event对象详尽解析
2009/02/17 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
简单的命令查看安装的python版本号
2020/08/28 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
春节联欢会主持词
2014/03/24 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
企业百日安全活动总结
2015/05/07 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
导游词之日月潭
2019/11/05 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
纯html+css实现Element loading效果
2021/08/02 HTML / CSS