pycharm的debug调试以及异常,Python 中错误的处理方式

这篇具有很好参考价值的文章主要介绍了pycharm的debug调试以及异常,Python 中错误的处理方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在b站看了详细的视频教程,做一个系统的总结。第一次写关于pycharm的debug调试以及python代码运行报错处理的帖子,错误地方请大家指出。

第一个部分:pycharm的debug调试

作为一个非科班出生的学生,平时看代码的时候特别的难懂,这时候对代码debug单步调试可以很好的看代码的具体信息。让我们能够更加清晰的理解代码具体传递过程。
debug:我们在pycharm窗口的右上角可以看见这个小虫子(七星瓢虫)图标。
pycharm的debug调试以及异常,Python 中错误的处理方式

同时我们也可以右击鼠标,这时候也可以发现这个小虫子。
当然如果代码没有错误,点击小虫子和run(上图最左边的三角符号)运行是一样的效果。
如果我们想让它在某一行停下来,我们可以在某一行打断点(就在某一行旁边点击鼠标左键),如下图:这时候debug,代码运行从第一行到第12行,而第13行代码停止运行。
pycharm的debug调试以及异常,Python 中错误的处理方式而Special Variables为特殊变量:在这里会显示运行结果,如下图。
pycharm的debug调试以及异常,Python 中错误的处理方式pycharm的debug调试以及异常,Python 中错误的处理方式Special Variables上边的结果为正常变量(如上图)
下边重点介绍几个按钮:
1.step over(F8) 单步调试
在当前这个脚本安装代码顺序逐行运行,点击一下,就会在Variables显示运行结果,如下图但我按键盘F8键,蓝色行由17行跳转到18行,Variables和17行后边都会显示详细信息。
pycharm的debug调试以及异常,Python 中错误的处理方式2.Step Into(F7) 单步调试
在单步执行时,遇到子函数就进入并且继续单步执行,有的会跳到源代码里面去执行。如下图,我将第13行打上断点,当我按键盘键F7的时候直接跳入定义的函数中去,这时候蓝色行在迪行,我们可以看到第6行的详细信息。

pycharm的debug调试以及异常,Python 中错误的处理方式3.Step Into My Code(Alt+Shift+F7快捷键)
在单步执行时,遇到子函数就进入并且继续单步执行,不会进入到源码中。所以Step Into My Code就我而言功能和Step Into比较相似,一般而言用处不大。
4.Step Out(Shift+F8快捷键)
当我们运行代码进入了一个函数体中,看了几行代码懂这个函数体是什么意思了,我想要跳出当前函数体,返回调用此函数的代码行,即使用此功能即可。这个功能还是比较方便。
5.Run to Cursor(Alt+F9)
如果我们打了多个断点的时候,我们按键盘F9键,直接从当前断点运行到下一个断点。如果只打了一个断点,直接运行到脚本结束。
当然我觉得用的最多的应该是Step Over(F7)和Step Into(F8)这两个键,这就是我对pycharm的debug调试功能的理解,有什么讲错了的地方请大家指出,谢谢!

第二部分:异常,Python 中错误的处理方式

这里边所用到的代码小例子是看b站视频所讲解的小例子。
当程序在运行时 Python 解释器遇到到一个错误,这时候就会停止程序的执行,并且提示一些错误信息,这就是异常。
1.简单的捕获异常语法
我们可以增加 try(尝试) 来捕获异常。
捕获异常最简单的语法格式:

try:
    尝试执行的代码
except:
    出现错误的处理

try except 语句的执行流程如下:
我们执行 try (尝试)里面的代码块,这个时候是不确定这个代码能否正常执行。执行异常时系统会自动生成一个异常类型,并将该异常交给 Python 解释器。Python 解释器收到异常对象,会通过except块来处理这个异常。如果Python 解释器找不到处理异常的 except 块程序运行终止,Python 解释器也将退出。
小例子:

try:
    # 提示用户输入一个数字
    num = int(input("请输入数字:"))
except:
    print("请输入正确的数字")

这时候运行代码,输入正确数字9,会出现运行正常并程序运行结束
pycharm的debug调试以及异常,Python 中错误的处理方式如果这个时候我输入一个汉字或者一个字母,这个时候会通过except块来处理这个异常。
pycharm的debug调试以及异常,Python 中错误的处理方式2.错误类型捕获
在程序执行时遇到不同类型的异常,做出不同的响应,这个时候我们需要捕获错误类型是什么。
语法格式:

try:
    # 尝试执行的代码
    pass
except 错误类型1:
    # 针对错误类型1,对应的代码处理
    pass
except (错误类型2, 错误类型3):
    # 针对错误类型2 和 3,对应的代码处理
    pass
except Exception as result:
    print("未知错误 %s" % result)

我们可以用一个 except 块可以同时处理多种异常。
小例子:

try:
    num = int(input("请输入整数:"))
    result = 8 / num
    print(result)
except ValueError:
    print("请输入正确的整数")
except ZeroDivisionError:
    print("除 0 错误")

当我运行程序,输入hah,结果如下:
pycharm的debug调试以及异常,Python 中错误的处理方式当我运行程序,输入0,结果如下:
pycharm的debug调试以及异常,Python 中错误的处理方式显然不同类型的错误,运行后通过except块来处理这个异常的类型也不一样。
当然在开发时,要预判到所有可能出现的错误,还是有一定难度的。这时候可以使用捕获未知错误,语法如下:

except Exception as result:
    print("未知错误 %s" % result)

3.异常捕获的完整语法
当然为了能够处理复杂的异常情况,完整的异常语法如下:

try:
    # 尝试执行的代码
    pass
except 错误类型1:
    # 针对错误类型1,对应的代码处理
    pass
except 错误类型2:
    # 针对错误类型2,对应的代码处理
    pass
except (错误类型3, 错误类型4):
    # 针对错误类型3 和 4,对应的代码处理
    pass
except Exception as result:
    # 打印错误信息
    print(result)
else:
    # 没有异常才会执行的代码
    pass
finally:
    # 无论是否有异常,都会执行的代码
    print("无论是否有异常,都会执行的代码")

else :只有在没有异常时才会执行的代码。
finally: 无论是否有异常,都会执行的代码。

try:
    num = int(input("请输入整数:"))
    result = 8 / num
    print(result)
except ValueError:
    print("请输入正确的整数")
except ZeroDivisionError:
    print("除 0 错误")
except Exception as result:
    print("未知错误 %s" % result)
else:
    print("正常执行")
finally:
    print("执行完成,但是不保证正确")

pycharm的debug调试以及异常,Python 中错误的处理方式4.异常的传递
当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方,如果传递到主程序,仍然没有异常处理,程序才会被终止。在开发中,可以在主函数中增加异常捕获,而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中,这样就不需要在代码中,增加大量的异常捕获,能够保证代码的整洁。
小例子:
定义函数 demo1() 提示用户输入一个整数并且返回
定义函数 demo2() 调用 demo1()
在主程序中调用 demo2()

def demo1():
    return int(input("请输入一个整数:"))

def demo2():
    return demo1()

try:
    print(demo2())
except ValueError:
    print("请输入正确的整数")
except Exception as result:
    print("未知错误 %s" % result)

pycharm的debug调试以及异常,Python 中错误的处理方式我尝试在三个地方输入:

def demo1():
    # try:
     return int(input("请输入一个整数:"))
    # except:
    #     pass

def demo2():
    # try:
        return demo1()
    # except:
    #     pass

# try:
demo2()
    # print(demo2())
# except ValueError:
#     print("请输入正确的整数")
# except Exception as result:
#     print("未知错误 %s" % result)

看错三步法
1.看line后面的数字,表示在哪一行犯错了,快速定位
2.看列出的这行代码,准确定位
3.报错原因:TypeError这一行就是阐释为什么错了
pycharm的debug调试以及异常,Python 中错误的处理方式其实我认为在最后一句报错那个地方去处理就行。但是额,对于底下有很多行报红,这里我也是不太清楚,只能按照异常传递试,如果说错了麻烦大家指出我的错误,并且希望大家也说说多行报红该怎么去看这种错误,谢谢大家

异常分类

BaseException 所有异常的基类
Exception 常见错误的基类
ArithmeticError 所有数值计算错误的基类
Warning 警告的基类
AssertError 断言语句(assert)失败
AttributeError 尝试访问未知的对象属性
DeprecattionWarning 关于被弃用的特征的警告
EOFError 用户输入文件末尾标志EOF(Ctrl+d)
FloattingPointError 浮点计算错误
FutureWarning 关于构造将来语义会有改变的警告
GeneratorExit generator.close()方法被调用的时候
ImportError 导入模块失败的时候
IndexError 索引超出序列的范围
KeyError 字典中查找一个不存在的关键字
KeyboardInterrupt 用户输入中断键(Ctrl+c)
MemoryError 内存溢出(可通过删除对象释放内存)
NamerError 尝试访问一个不存在的变量
NotImplementedError 尚未实现的方法
OSError 操作系统产生的异常(例如打开一个不存在的文件)
OverflowError 数值运算超出最大限制
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特征会被遗弃的警告
ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
RuntimeError 一般的运行时错误
RuntimeWarning 可疑的运行行为(runtime behavior)的警告
StopIteration 迭代器没有更多的值
SyntaxError Python的语法错误
SyntaxWarning 可疑的语法的警告
IndentationError 缩进错误
TabError Tab和空格混合使用
SystemError Python编译器系统错误
SystemExit Python编译器进程被关闭
TypeError 不同类型间的无效操作
UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)
UnicodeError Unicode相关的错误(ValueError的子类)
UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类)
UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类)
UserWarning 用户代码生成的警告
ValueError 传入无效的参数
ZeroDivisionError 除数为零文章来源地址https://www.toymoban.com/news/detail-417853.html

到了这里,关于pycharm的debug调试以及异常,Python 中错误的处理方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pycharm Debug调试(纯干货)

    内容目录(原文见公众号python宝或 www.xmmup.com ) 一、打断点二、代码调试三、界面小图标介绍四、控制台介绍 一、打断点         一个断点标记了一个代码行,当Pycharm运行到该行代码时会将程序暂时挂起。         注意断点会将对应的代码行标记为红色,取消断点的

    2024年02月02日
    浏览(38)
  • Pycharm Debug(断点调试)超详细攻略

    PyCharm Debug 可以帮助开发者在代码运行时进行实时的调试和错误排查,提高代码开发效率和代码质量。当然也可以对源码进行断点调试,领略源码的魅力。 让我们来举个简单的栗子 这段代码主要作用,循环range里面的值并调用自定义的add方法将返回的结果打印 在你想放置断点

    2024年02月07日
    浏览(46)
  • Python实战基础19-异常处理及程序调试

    在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”。 这些异常有的是由于开发者将敲错,这类错误产生的是SyntaxError:invalid syntax(无效语法),这将直接导致程序不能运行。这类异常是显式的,在开发阶段很容易被发现。 还有一类是隐式的,通

    2024年02月07日
    浏览(50)
  • 玩以太坊链上项目的必备技能(错误处理以及异常-Solidity之旅十四)

    错误处理 作为开发者的我们知道,我们所编写出来的程序难免会出现 bug ,而要做的是捕获异常,给用户抛出一个友好地错误提示。 而在 Solidity 中,根据 状态恢复 异常来处理错误,该异常将撤销在当前调用中对状态所做的所有修改,与此同时,还向调用者标记错误。 它有

    2024年02月01日
    浏览(45)
  • Python中处理HTTP异常和错误的策略

    在Python中处理HTTP异常和错误是一项至关重要的任务,它关乎到应用程序的健壮性、用户体验以及数据的安全性。HTTP请求可能会遭遇多种异常和错误,如连接错误、超时、HTTP状态码错误等。为了有效地处理这些异常和错误,开发者需要采取一系列策略。 1. 使用try-except捕获异

    2024年02月22日
    浏览(39)
  • Python基础合集 练习21 (错误与异常处理语句)

    ‘’‘try: block1 except[ExceptionName]: block2 ‘’’ while True: try: num = int(input(\\\'请输入一个数: \\\')) result = 50 / num print(result) print(‘50/{0}={1}’.format(num, result)) exit() # 退出程序 except ZeroDivisionError: print(‘除数不能为0,请重新输入’) while True: try: num = int(input(\\\'请输入一个数: \\\')) result = 50 /

    2024年02月02日
    浏览(46)
  • windows 达梦数据库服务连接时提示:登录服务器失败,错误号6001,错误消息:网络通信异常 之数据库服务不存在的处理方式

    在windows客户端上连接部署在windows操作系统上的达梦数据库, 使用DM管理工具连接数据库    正确输入用户名与密码之后点击确定按钮之后出现: 登录服务器失败,错误号6001,错误消息:网络通信异常  现象 如下图所示:   在之前也发布了一篇关于此错误的博文: 达梦管

    2024年02月11日
    浏览(57)
  • Advanced .Net Debugging 4:基本调试任务(对象检查:内存、值类型、引用类型、数组和异常的转储)

    一、介绍 这是我的《 Advanced .Net Debugging 》这个系列的第四篇文章。今天这篇文章的标题虽然叫做“基本调试任务”,但是这章的内容还是挺多的。由于内容太多,故原书的第三章内容我分两篇文章来写。上一篇我们了解了一些调试技巧,比如:单步调试、下断点、过程调试

    2024年03月09日
    浏览(45)
  • pytorch 进行分布式调试debug torch.distributed.launch 三种方式

    一. pytorch 分布式调试debug torch.distributed.launch 三种方式 1. 方式1:ipdb调试(建议) 参考之前的博客:python调试器 ipdb 注意:pytorch 分布式调试只能使用侵入式调试,也即是在你需要打断点的地方(或者在主程序的第一行)添加下面的代码: 当进入pdb调试后,跟原先使用pdb调试

    2024年02月07日
    浏览(33)
  • 微信小程序之---使用微信开发者工具调试小程序 debug 失效 以及 console.log 无法输出

    使用 HbuilderX 开发微信小程序,在调试的过程中,使用了 debug 以及 console.log ,在 H5 中输出测试都是可以的,但是运行到微信开发者工具之后, console.log 无法生效,在查阅相关解决办法之后,都没有解决 在此之前有尝试过一些解决方案,如清除缓存 … 但是这个解决方案,并没有生效 因为

    2024年02月11日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包