【细无巨细,包你学会】自学Python运行时会遇到的异常与解决方法

本文详细介绍了Python编程中遇到的异常及其处理方法,包括Python异常的简介、常见异常类型、异常处理机制(如try-except-else-finally)、异常的传递和自定义异常。通过实例解析了如何捕获、处理并利用异常来增强程序的健壮性,旨在帮助开发者掌握异常处理原则,实现程序稳定运行。
摘要由CSDN通过智能技术生成

我们的计算机程序在运行时,有时也会由于各种不可控的原因出现错误。例如:找不到需要的文件、网络错误、用户输入不对等等。这时,计算机程序就会出现无法继续运行的情况,甚至会直接退出。比如:我们常见的手机APP闪退,网站出现500错误,或者Windows里的如下错误:
在这里插入图片描述
相信大家遇到这样的情况,都很恼火吧?对于用Python编写的程序。当 Python 检测到一个错误时,解释器无法继续执行,反而出现了一些错误的提示,这就是所谓的"Python异常"。因此,为了让我们的程序可以稳定地长久运行,你需要知道如何正确处理异常。

你们的三连(点赞,收藏,评论)是我持续输出的动力,感谢。
在兴趣中学习,效益超乎想象,有趣的源码与学习经验,工具安装包,欢迎加我的微信:bobin1124,一起交流学习与分享。

一、Python异常简介

1.Python程序中的异常

前面说了那么多,那Python异常到底是怎样的呢?别急,我们先来看看Python程序中的异常是怎么呈现的。

在这里插入图片描述

如上图所示,当我们想要运行python程序文件 test.py 时,在终端键入python test.py并按下回车之后,屏幕上在“-----test--1---”之后 ,会出现的一串信息:

Traceback (most recent call last):

  File "C:/workspace/boxuegu/exception/test.py", line 2, in <module>

    open('123.txt','r')

FileNotFoundError: [Errno 2] No such file or directory: '123.txt'

这个就是Python异常信息。图片中这段异常,意思是说:文件test.py在第二行出现了错误,这是一个编号为2的“输入输出型”的错误,名叫“123.txt”的文件不存在。

为什么会出现这样的异常呢?我们来看一下这叫做test.py的python程序文件的源代码长啥样:

print('-----test--1---')

open('123.txt','r')

print('-----test--2---')

对应着运行结果,我们看到,原本程序在open()打开文件操作之后,还要打印”-----test--2---“,但结果却没有执行打印”-----test--2---“这个动作。

这是因为,我们在使用open()函数尝试打开一个不存在的文件“123.txt”,当找不到“123.txt” 文件时,程序就会抛出给我们一个FileNotFoundError 类型的错误,No such file or directory:123.txt”(没有 123.txt 这样的文件或目录)。

当 Python 检测到一个错误,并且无法处理时,就会出现一些错误的提示,这就是所谓的"异常"。如果一直没有对异常进行处理,那么程序就会强制退出执行。

2.常见的异常及继承结构

在 Python 中,异常会通过一个对象(object)来表示,对象中存储着关于异常的信息。我们在编程时,经常遇见的一些异常有:

在这里插入图片描述

除上述常见异常,在Python 3中,还内置了其他种类的异常,在这里我们列举部分例子

在这里插入图片描述

完整的Python 3内置异常,你可以在Python官网查询到:https://docs.python.org/3/tutorial/errors.html

在Python中,所有的异常和错误,都继承自 BaseException 这个基类。但在实际开发中,我们还会更多地与Exception这个父类打交道。Exception 继承自BaseException,实现了我们处理异常中需要的常见方法。Python内置的异常,也大多继承自Exception,并以自身的异常描述,作为名字,命名规则往往为AbcException或XyzError这样。

在这里插入图片描述

二 、异常的处理

1.捕获异常

首先,作为计算机,它需要我们告知它,哪里可能会有异常,以及会有什么样的异常,即异常的捕获。

在 Python 中,与其它语言类似,我们会使用 try…except…捕获异常 。

在这里插入图片描述
先看如下代码示例:

try:

    print('-----test--1---')

    open('123.txt','r')

    print('-----test--2---')

except IOError:

    pass

能看的出,第二段“-----test--2---”同样没有打印出来,程序却正常退出了。这是因为,这里我们用 try 和 except 捕获到了 IOError 异常,并添加了处理的方法。因此,print(’-----test–2—’)语句并没有被执行。

我们通过try 关键字,包含逻辑代码,表示在这里可能会出现异常,需要处理。程序执行到某条语句时如果发生了异常,则不会继续执行,而是立刻寻找跟随try的except语句,并进入except包含的代码中执行。这就是异常的捕获。

而except 关键字里的 pass 表示虽然捕获了异常,但什么也不做;如果把 pass 改为 print 语句,那么就会输出其他信息。也就是说,这里也可以执行其他我们想要的逻辑,比如断开连接、关闭文件、释放资源、记录日志等常见的异常处理逻辑。这就是 Python 的异常捕获处理。

总结一下,try…catch…的使用方法如下:

  1. 把可能出现问题的代码,放在 try 中
  2. 把处理异常的代码,放在 except 中,异常发生时,系统会中断后续的代码执行,而进入except内的代码。

2.except 捕获多个异常

首先,我们知道,根据传递给except的异常类型,我们可以指定捕获处理特定的某一种异常,如下

try:
    print(num)

except IOError:

    print
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值