1.错误处理

使用try except finally

try:

i= 10/0exceptZeroDivisionError, e:print "ZeroDivisionError", efinally:print "Finally"

ZeroDivisionError integer division ormodulo by zero

Finally

错误类型(含warning)

BaseException+--SystemExit+--KeyboardInterrupt+--GeneratorExit+--Exception+--StopIteration+--StandardError| +--BufferError| +--ArithmeticError| | +--FloatingPointError| | +--OverflowError| | +--ZeroDivisionError| +--AssertionError| +--AttributeError| +--EnvironmentError| | +--IOError| | +--OSError| | +--WindowsError (Windows)| | +--VMSError (VMS)| +--EOFError| +--ImportError| +--LookupError| | +--IndexError| | +--KeyError| +--MemoryError| +--NameError| | +--UnboundLocalError| +--ReferenceError| +--RuntimeError| | +--NotImplementedError| +--SyntaxError| | +--IndentationError| | +--TabError| +--SystemError| +--TypeError| +--ValueError| +--UnicodeError| +--UnicodeDecodeError| +--UnicodeEncodeError| +--UnicodeTranslateError+--Warning+--DeprecationWarning+--PendingDeprecationWarning+--RuntimeWarning+--SyntaxWarning+--UserWarning+--FutureWarning+--ImportWarning+--UnicodeWarning+-- BytesWarning

logging模块记录错误信息

importloggingdefTest(i):try:

j= 10/iexceptStandardError, e:print "standardError"logging.exception(e)print "Test"Test(0)print "End"

standardError

ERROR:root:integer divisionormodulo by zero

Test

End

Traceback (most recent call last):

File"F:/PyProject/test2.py", line 9, inTest

j= 10/i

ZeroDivisionError: integer divisionor modulo by zero

自定义错误类型继承内置错误类型

class FooError(StandardError):

pass

def foo(s):

n = int(s)

if n == 0:

raise FooError("value is %s" % s)

foo("0")

Traceback (most recent call last):

File"F:/PyProject/test2.py", line 18, in foo("0")

File"F:/PyProject/test2.py", line 15, infooraise FooError("value is %s" %s)__main__.FooError: value is 0

另 可以在except中捕获错误之后 使用 raise 将错误抛给顶层调用者去处理

2.调试

assert 断言

deffoo(n):

i=int(n)assert i != 0, "catch assert"

returni

a= foo("0")print a

Traceback (most recent call last):

File"F:/PyProject/test2.py", line 13, in a= foo("0")

File"F:/PyProject/test2.py", line 10, infooassert i != 0, "catch assert"

AssertionError: catch assert

相当于 if i != 0 为True 继续执行 反之 抛出 AssertionError并中断运行

关闭assert方法 是 在python 解释器中加参数 -O 来将python编译成pyo文件

logging不会抛出错误 但是会打日志 默认logging级别是WARNING 通过logging.basicConfig(level=logging.日志等级)修改默认值

logging模块将日志打印到了标准输出中,且只显示了大于等于设定级别的日志 (日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG >NOTSET)

默认格式为 Logger:输出内容

启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行状态

以参数-m pdb启动程序后,pdb定位到下一步要执行的代码。输入命令l来查看代码。任何时候都可以输入命令p 变量名来查看变量。

pdb.set_trace() 这个方法也是用pdb,但是不需要单步执行,我们只需要import pdb,然后,在可能出错的地方放一个pdb.set_trace(),就可以设置一个断点,行代码,程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行

python断点调试出现问题_Python错误、调试相关推荐

  1. 7 php程序的调试方法_PHP程序错误调试方法 让php显示错误提示

    公司的服务器用的是wdcp搭建的环境,安装非常方便,但是在开发的过程可能把函数名之内的东西写错了,服务器直接返回的是500错误,没有任何错误提示,只是告诉你500错误,很让人头疼,这样调试错误很不方便 ...

  2. Linux内存不够调试,Linux系统内存错误调试方法

    而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由g ...

  3. python断点调试从哪里看数据_python断点调试

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 很多项目是用python写构建脚本的,比如微信最近开源的终端跨平台组件 mars ...

  4. python示例异常处理与程序调试_Python错误处理及代码调试方

    一次写完代码程序并能够正常运行的概率很小很小,总会有各种各样的错误bug需要处理.有的报错简单,看看报错信息简单修改一下就可以了. 但是有的报错很复杂,特别是一些复杂长代码,需要我们定位到错误的位置, ...

  5. chatgpt赋能python:Python断点调试指南:让调试更高效

    Python断点调试指南:让调试更高效 在Python编程中,调试是一个必不可少的环节.当我们面临代码出现错误或程序不按预期运行时,如何快速找到问题,解决它们呢?这时候断点调试就发挥了重要的作用.本篇 ...

  6. Python断点调试方法

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Python 代码调试技巧 Debug 对于任何开发人员都是一项非 ...

  7. python逐行调试_python单步调试

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文由腾讯云+社区自动同步,原文地址 https:stackoverflow.c ...

  8. python断点调试_「Python调试器」,快速定位各种疑难杂症!!!

    在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要讲 ...

  9. python代码调试中间变量_Python代码调试的那些“最少且必要”技巧

    原标题:Python代码调试的那些"最少且必要"技巧 异常处理模块能帮助我们在运行期间处理异常信息,但Python代码还有更为基础的错误--语法错误和逻辑错误. 语法错误相对简单, ...

最新文章

  1. JS设计模式(13)状态模式
  2. java中日期计算时间差,用java计算日期/时间差
  3. 第三日:继续恢复网站
  4. python分割数字_对python数据切割归并算法的实例讲解
  5. android popupwindow 自定义背景,android – 无法将PopupWindow背景设置为透明
  6. amh 4.2 升级php_Centos系统 + AMH4.2面板 PHP升级7.3.5
  7. CF455B A Lot of Games
  8. Struts2中的国际化
  9. 用SYS本地登录或远程登录引起ORA-01031错误
  10. django+xadmin在线教育平台慕学网(一)
  11. Java分布式开发中的RPC
  12. 最新版校园招聘进大厂系列----------(5)百度篇 -----未完待续
  13. OpenSSL密码库算法笔记——第2.4章 三种模运算的比较
  14. 【科创人独家】云风:从创业到招安,自由的游戏玩家+务实的程序员
  15. Qt 人脸对比体温检测软件(界面酷炫),千人毫秒响应
  16. 【百度】怎么使用cookie登陆百度账号
  17. Nodejs 服务端生成验证码
  18. 在2022年需要使用的25个最佳GOOGLE CHROME扩展
  19. 量子计算与区块链抗量子算法
  20. 群晖NAS搭建portainer

热门文章

  1. 特斯拉柏林超级工厂最终环保审批结果有望周五揭晓
  2. 自如总部摘牌?官方回应:更换logo 业务一切正常
  3. 三星Galaxy S22 Ultra发布推迟:此前至少5款骁龙8平台旗舰亮相
  4. IT管理如何从“普通”走向“高效”?
  5. 亚马逊创始人下月将乘自家火箭进入太空 亲弟弟同行
  6. 苹果推出App Store搜索建议功能
  7. 力压腾讯!《原神》连续5个月成中国手游海外收入冠军
  8. 江淮大众正式更名,今日盘中涨停!
  9. 荣耀法定代表人由饶俊祥变更为万飚 注册资本增长2973%
  10. 拼多多股价创历史新高:市值再度逼近京东