iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >分析Python的错误,调试和测试方法
  • 538
分享到

分析Python的错误,调试和测试方法

2023-06-02 00:06:07 538人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“分析python的错误,调试和测试方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析Python的错误,调试和测试方法”吧!  错误处理  在预防程序发生运行错误的时候,可

本篇内容主要讲解“分析python的错误,调试和测试方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析Python的错误,调试和测试方法”吧!

  错误处理

  在预防程序发生运行错误的时候,可以预先设置返回一个错误代码,然后在执行程序的时候,就会知道程序是否正确。

  用错误码来表示是否出错有时候也十分的不方便,因为函数本身应该返回的正常结果和错误码混在一起,会导致必须用大量的代码去判断代码是否出错:

  def foo():

  r = some_function()

  if r == (-1):

  return -1

  return r

  def bar():

  r = foo()

  if r==(-1):

  print('Error')

  else:

  pass

  一旦发生错误,还需要各个函数之间互相传递,用起来不方便,所以try…except…finally就被广泛的用于试验错误。

  try

  下面这个例子可以让我们了解try的使用方法:

  >>> try:

  print("try...")

  r = 10 / 0

  print("result:",r)

  except ZeroDivisionError as e:

  print("except:",e)

  finally:

  print("Finally")

  try...

  except: division by zero

  Finally

  如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块,至此,执行完毕。

  如果将上面的0改成5,则不会报错,正常运行。

  >>> try:

  print("try...")

  r = 10 / 5

  print("result:",r)

  except ZeroDivisionError as e:

  print("except:",e)

  finally:

  print("Finally")

  try...

  result: 2.0

  Finally

  可以看出不再执行except语句,只要一个程序中有finally语句,他肯定会被执行。

  int()函数可能会抛出ValueError,所以我们用一个except捕获ValueError,用另一个except捕获ZeroDivisionError。此外,如果没有错误发生,可以在except语句块后面加一个else,当没有错误发生时,会自动执行else语句:

  try:

  print('try...')

  r = 10 / int('5')

  print('result:', r)

  except ValueError as e:

  print('ValueError:', e)

  except ZeroDivisionError as e:

  print('ZeroDivisionError:', e)

  else:

  print('no error!')

  finally:

  print('finally...')

  print('END')

  Python的错误其实也是一种类,所有的错误类型都继承自BaseException,所以在使用except不但捕获该类型的错误,还把其子类也“一网打尽”:

  try:

  foo()

  except ValueError as e:

  print('ValueError')

  except UnicodeError as e:

  print('UnicodeError')

  第二个except永远也捕获不到UnicodeError,因为UnicodeError是ValueError的子类,如果有,也被第一个except给捕获了。

  常见错误及其关系

  不需要在每个可能出错的地方去捕获错误,只要在合适的层次去捕获错误就可以了。

  def foo(s):

  return 10 / int(s)

  def bar(s):

  return foo(s) * 2

  def main():

  try:

  bar('0')

  except Exception as e:

  print('Error:', e)

  finally:

  print('finally...')

  调用栈

  如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出。下面这个例子可以很好地展示这种操作:

  def foo(s):郑州妇科医院哪家好 Http://www.120zzzy.com/

  return 10 / int(s)

  def bar(s):

  return foo(s) * 2

  def main():

  bar('0')

  main()

  运行显示结果:

  Traceback (most recent call last):

  File "F:/python文件/tiaoshi/__init__.py", line 10, in

  main()

  File "F:/python文件/tiaoshi/__init__.py", line 8, in main

  bar('0')

  File "F:/python文件/tiaoshi/__init__.py", line 5, in bar

  return foo(s) * 2

  File "F:/python文件/tiaoshi/__init__.py", line 2, in foo

  return 10 / int(s)

  ZeroDivisionError: division by zero

  下面我们就来解读一下这个输出的结果,首先第一句:

  Traceback (most recent call last):

  告诉我们这是错误的跟踪信息。

  File “F:/python文件/tiaoshi/init.py”, line 10, in <\module>

  main()

  代码中第10行调用main函数出错,原因是第8行.

  File “F:/python文件/tiaoshi/init.py”, line 8, in main

  bar(‘0’)

  代码中第8行调用bar函数出错,原因是第5行.

  File “F:/python文件/tiaoshi/init.py”, line 5, in bar

  return foo(s) * 2

  代码中第5行返回foo函数出错,原因是return 10 / int(s)这个语句出错了,这是错误产生的源头,因为下面打印了:

  ZeroDivisionError: integer division or modulo by zero

  根据错误类型ZeroDivisionError,我们判断,int(s)本身并没有出错,但是int(s)返回0,在计算10 / 0时出错,至此,找到错误源头。

  标题出错的时候,一定要分析错误的调用栈信息,才能定位错误的位置。

  记录错误

  如果不捕获错误,自然可以让Python解释器来打印出错误堆栈,但程序也被结束了。既然我们能捕获错误,就可以把错误堆栈打印出来,然后分析错误原因,同时,让程序继续执行下去。Python内置的logging模块可以非常容易地记录错误信息:

  import logging

  def foo(s):

  return 10 / int(s)

  def bar(s):

  return foo(s) * 2

  def main():

  try:

  bar('0')

  except Exception as e:

  logging.exception(e)

  main()

  输出结果:

  END

  ERROR:root:division by zero

  Traceback (most recent call last):

  File "F:/python文件/tiaoshi/__init__.py", line 14, in main

  bar('0')

  File "F:/python文件/tiaoshi/__init__.py", line 9, in bar

  return foo(s) * 2

  File "F:/python文件/tiaoshi/__init__.py", line 5, in foo

  return 10 / int(s)

  ZeroDivisionError: division by zero

  Python内置的try…except…finally用来处理错误十分方便。出错时,会分析错误信息并定位错误发生的代码位置才是最关键的。

  程序也可以主动抛出错误,让调用者来处理相应的错误。但是,应该在文档中写清楚可能会抛出哪些错误,以及错误产生的原因。

到此,相信大家对“分析Python的错误,调试和测试方法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 分析Python的错误,调试和测试方法

本文链接: https://www.lsjlt.com/news/228190.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 分析Python的错误,调试和测试方法
    本篇内容主要讲解“分析Python的错误,调试和测试方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析Python的错误,调试和测试方法”吧!  错误处理  在预防程序发生运行错误的时候,可...
    99+
    2023-06-02
  • python之错误调试
      无论谁写的程序,必定会存在bug,解决bug需要我们去调试程序。于是乎,在Python中,就会好几种调试手段,如print、assert、logging、pdb、pdb.set_trace()   一、使用print()函数直接打印 ...
    99+
    2023-01-31
    错误 python
  • PHP REST API的测试与调试方法
    php rest api 测试与调试方法:单元测试:隔离代码模块并验证输出。集成测试:测试 api 组件协作。端到端测试:模拟完整用户流程。调试工具:日志记录、调试器和 api 测试工具...
    99+
    2024-05-12
    php rest api webdriver
  • PHP中如何实现调试和错误调试?
    在PHP中,调试和错误调试是开发过程中不可或缺的一部分。调试和错误调试可以帮助开发人员快速识别和解决应用程序中的错误,从而提高应用程序的稳定性和可靠性。本文将介绍PHP中如何实现调试和错误调试。一、错误调试在PHP应用程序中,错误可能会发生...
    99+
    2023-05-14
    调试工具 PHP调试 PHP错误调试
  • PHP 函数的调试和测试
    php 函数调试和测试指南:配置 xdebug 以获得高级调试功能。使用 var_dump() 和 print_r() 检查变量值。使用条件断点和断点来控制执行流程。编写单元测试以自动化...
    99+
    2024-04-13
    测试 调试
  • Python 面试必读:同步框架常见错误及调试方法。
    Python 面试必读:同步框架常见错误及调试方法 在 Python 编程中,同步框架是必不可少的工具,可以让我们更加高效地编写代码。但是,同步框架也会带来一些常见的错误,这些错误可能会让我们的代码出现崩溃、死锁等问题。本文将介绍一些常见的...
    99+
    2023-07-08
    面试 同步 框架
  • Golang函数的测试和调试
    在 golang 中测试函数:创建以 _test.go 结尾的测试文件。声明一个以 testxxx 命名的测试函数,其中 xxx 是被测函数的名称。使用断言来验证预期结果与实际结果是否一...
    99+
    2024-04-15
    测试 golang vscode
  • 软件测试:瓶颈分析方法
    软件测试:瓶颈分析方法内存分析法内存分析用于判断系统有无内存瓶颈,是否需要通过增加内存等手段提高系统性能表现。内存分析需要使用的计数器:Memory类别和Physical Disk类别的计数器。内存分析的主要方法和步骤:(1)首先查看Mem...
    99+
    2023-06-05
  • 模板化编程中常见的错误和调试方法?
    模板化编程中的常见错误包括:模板实例化失败:可以使用 typename 声明模板参数类型或显式实例化模板。语法错误:仔细检查语法并确保所有符号正确使用。不匹配的模板实参:确保实参类型满足...
    99+
    2024-05-08
    调试方法 模板化编程 重构代码
  • Golang方法的错误处理与调试技巧
    Golang方法的错误处理与调试技巧 Golang(又称Go语言)作为一门由Google开发的现代化编程语言,具有简洁、高效和并发特性,受到越来越多开发者的青睐。在实际的开发过程中,错...
    99+
    2024-02-23
    golang 错误处理 调试技巧 go语言
  • python+pytest自动化测试函数测试类测试方法的封装
    目录前言一、测试用例封装的一般规则三、测试类/方法的封装四、示例代码总结前言 今天呢,笔者想和大家聊聊python+pytest接口自动化中将代码进行封装,只有将测试代码进行封装,才...
    99+
    2024-04-02
  • 如何用 Python 和 Javascript 进行分布式系统的测试与调试?
    分布式系统是一个由多个独立的计算机节点组成的系统,它们通过网络通信协作工作,实现数据共享、负载均衡、容错和高可用等特性。在分布式系统中,测试和调试是非常重要的环节,因为一个小小的错误可能会导致整个系统的崩溃。本文将介绍如何使用 Python...
    99+
    2023-06-19
    leetcode javascript 分布式
  • JavaScript调试之console.log调试的示例分析
    这篇文章将为大家详细讲解有关JavaScript调试之console.log调试的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言对于JavaScript程序的...
    99+
    2024-04-02
  • PHP 调试错误:常见错误的指南
    常见的 php 调试错误包括:语法错误:检查代码语法,确保没有错误。未定义变量:在使用变量之前,确保已将其初始化并赋值。缺失分号:为所有代码块添加分号。函数未定义:检查函数名拼写是否正确...
    99+
    2024-05-11
    调试 php
  • Python断点调试方法
    Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我们准确的定位错误,发现程序中的 bug。python 提供了一系列 debug 的工具和包,可供我们选择。本文将主要阐述如何利用 python debug 相...
    99+
    2023-01-31
    断点 方法 Python
  • 调试windows7分辨率的方法
    第一步,首先依然是进入电脑桌面,在桌面空白位置单击鼠标右键,然后鼠标箭头放到“屏幕分辨率”再用左键点击进去如下图: 点击进入“屏幕分辨率”之后就可以看到屏幕分辨率调节窗口...
    99+
    2023-06-04
    windows7分辨率 分辨率 方法 windows7
  • 闭包在测试和调试方面的作用是什麼?
    闭包在测试和调试中的作用包括:隔离测试,防止外部变量影响结果。调试难以到达的变量,保持对变量的访问和修改。缓存数据,提升程序性能。 闭包在测试和调试中的作用 什么是闭包? 闭包是一个函...
    99+
    2024-04-25
    测试 调试 闭包 python 作用域
  • python concurrent.futures模块的测试方法
    本篇内容主要讲解“python concurrent.futures模块的测试方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python concurrent.futures模块的测试方法”...
    99+
    2023-06-20
  • Python IDE是否支持Django和NumPy的调试和错误处理?
    Python是一种广泛应用的编程语言,它有着丰富的库和工具,可以应用于众多领域。其中,Django和NumPy是Python的两个重要的库,用于Web开发和科学计算。在使用Python进行开发时,调试和错误处理是必不可少的环节。那么,Py...
    99+
    2023-07-31
    ide django numy
  • PHP 函数错误调试的有效方法是什么?
    php 函数错误调试有效方法:启用 php 错误报告使用 try-catch 块捕获异常使用 xdebug 调试器逐步执行和检查变量检查函数签名确保正确性使用日志记录功能记录错误信息 ...
    99+
    2024-04-26
    调试 php phpstorm vscode
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作