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中数字以及算数运算符的相关使用
Oct 12 Python
Python性能提升之延迟初始化
Dec 04 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
Python数组并集交集补集代码实例
Feb 18 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
Python实现七个基本算法的实例代码
Oct 08 Python
使用Python解析Chrome浏览器书签的示例
Nov 13 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 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数学运算
2011/12/30 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python内建数据结构详解
2016/02/03 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python线程、进程和协程详解
2016/07/19 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
python实现windows下文件备份脚本
2018/05/27 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
作弊检讨书1000字
2014/02/01 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
2014年学生会工作总结
2014/11/07 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技