Python基础4--异常处理(try&except&finally)

目录

1、基本异常处理(try&except)

2、带finally的子句异常处理(try&except&finally)


       任何程序都可能会遇到运行出错的现象,异常是不可避免的,但是可以通过异常处理语句得到合理解决。针对程序异常出错问题,Python提供了一套完整的处理机制。

1、基本异常处理(try&except)

基本语法使用:

try:
    代码模块1      #执行代码模块1,如果正常直接结束,如果异常走except里的子代码
except:
    代码模块2

具体流程:

1、先执行try语句

2、执行代码模块1,如果代码模块1正确,忽略except和代码模块2,直接执行完毕

3、如果代码模块1发生了异常,则终止代码模块1的执行,走到except

4、except捕捉到异常信息,开始执行代码模块2

报错示例:

Atom2 = 1 + Atom  #Atom2 = 1+Atom 
print(Atom2)      #打印Atom2的值 打印结果很明显会报错,因为我没有定义变量Atom

打印结果:NameError: name 'Atom' is not defined

因为我没有给Atom赋值,所以打印结果会报错,这时候我们就可以用到try&except来进行异常处理

try:                                #先执行try,代码开始捕捉异常信息
    Atom2 = 1 + Atom                #代码模块1,没有给Atom赋值直接计算Atom2 = 1 + Atom,因为再这里就捕获到了异常,所以就不在执行代码模块1里的内容,直接跳到except处
    print(Atom2)                    
except:                             #上面捕获到错误信息了,开始执行except里的内容
    print("出错了,没有对Atom赋值")  #打印:出错了,没有对Atom赋值

输出结果为:出错了,没有对Atom赋值

执行步骤:

1、看到有try,先执行try下的子代码

2、发现子代码中 Atom没有被定义,所以Atom2 = 1 + Atom会报错

3、except会捕获到上面的异常信息,然后开始执行 except下的子代码

4、最后打印:出错了,没有对Atom赋值

我们来看个正确的,看看会不会走到except里:

try:                   #捕捉异常机制开始
    Atom2 = 1 + 2      #执行子代码:Atom2 = 1+2  这个没有问题
    print(Atom2)       #打印结果为 3 
except:                #因为try里的子代码模块正常没有报错,所以不会进入到except中
    print("出错了,没有对Atom赋值")

输出结果为:3

执行步骤:

1、看到有try,先执行try下的子代码

2、发现子代码中Atom2 = 1 + 2 没问题

3、然后打印1+2的结果,打印结果为 3

4、因为 try下的子代码模块运行正常,没有异常,所以不走except下的子代码

2、带finally的子句异常处理(try&except&finally)

      先看下finally的基本结构:

try:
    代码模块1      #执行代码模块1,如果正常直接结束,如果异常走except里的子代码
except:           #异常的情况下走到except的子代码中,如果try下子代码正常,将忽略except的子代码
    代码模块2
finally:          #无论try下的子代码是否异常,都要运行finally的子代码
    子代码模块3

执行步骤:

1、先执行try语句

2、执行代码模块1,如果代码模块1正确,忽略except和代码模块2,直接执行完毕

3、如果代码模块1发生了异常,则终止代码模块1的执行,走到except

4、except捕捉到异常信息,开始执行代码模块2

5、不管try下的子代码模块是否正确,都执行finally下的子代码

举个try正确的例子:

try:                  #开始捕获异常
    Atom2 = 1 + 2     #Atom2 = 1 + 2代码正常
    print(Atom2)      #打印结果3
except:               #因为try的子模块没有异常,所以不运行except下的子代码模块
    print("出错了,没有对Atom赋值")
finally:              #因为有finally,所以不关try下的子代码模块是否正确,都会运行finally下的子代码
    print("肯定执行我")#打印 肯定执行我

打印结果为:3
                  肯定执行我

执行步骤:

1、看到有try,先执行try下的子代码

2、发现子代码中Atom2 = 1 + 2 没问题

3、然后打印1+2的结果,打印结果为 3

4、因为 try下的子代码模块运行正常,没有异常,所以不走except下的子代码

5、但是有finally,所以不管try下的代码模块是否正常都会执行finally下的子代码模块

6、打印结果:肯定执行我

7、所以最后打印结果为:try下的Atom2的值  3 和finally下子代码打印的结果:肯定执行我

现在看下try下子代码模块异常的例子:

try:                        #先执行try,代码开始捕捉异常信息
    Atom2 = 1 + Atom        #代码模块1,没有给Atom赋值直接计算Atom2 = 1 + Atom,因为在这里就捕获到了异常,所以就不在执行代码模块1里的内容,直接跳到except处
    print(Atom2)                    
except:                     #上面捕获到错误信息了,开始执行except里的内容
    print("出错了,没有对Atom赋值")  #打印:出错了,没有对Atom赋值
finally:                    #因为有finally,所以不关try下的子代码模块是否正确,都会运行finally下的子代码
    print("肯定执行我")      #打印 肯定执行我

最后打印的结果为:出错了,没有对Atom赋值
                                 肯定执行我

执行步骤:

1、看到有try,先执行try下的子代码

2、发现子代码中 Atom没有被定义,所以Atom2 = 1 + Atom会报错

3、except会捕获到上面的异常信息,然后开始执行 except下的子代码

4、最后打印:出错了,没有对Atom赋值

5、但是有finally,所以不管try下的代码模块是否正常都会执行finally下的子代码模块

6、打印结果:肯定执行我

7、所以最后打印结果为:except下打印的值:出错了,没有对Atom赋值  和  finally下子代码打印的结果:肯定执行我

      这些就是基本的异常处理相关的内容,如果只是怕出错,没有必须要执行的代码,就可以用try&except来写,如果有不管是否出错,最后都必须要执行的情况,就需要再最后加上finally处理即可。


 下图为公众号二维码,内容会同步发出,大家可以关注一起学习

这个是张狗子小哥哥的公众号,会分享一些平时的工作心得,可以关注看下。

                                                

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: try...except...finally是Python处理异常情况的一种结构。 try语句块中包含可能引发异常的代码,如果有异常发生,程序会跳到对应的except语句块中执行。在except语句块中,可以通过一些代码来处理异常,或者将异常抛出。如果没有发生异常,就会跳过所有except语句块。 而finally语句块中的代码会在try和except块执行完后无论如何都会被执行。通常用于释放资源或进行清理操作,比如关闭打开的文件或数据库连接。 ### 回答2: Python 异常处理是对程序中可能发生错误的情况进行处理和控制的一种方式。在 Python 中可以使用 try…except…finally… 结构实现对程序发生错误的处理。 try…except…finally… 结构的语法如下: ``` try: # 可能会出错的代码块 <语句(s)> except <异常类型>: # 出现异常后的处理 <语句(s)> finally: # 无论是否出现异常都会执行的代码块 <语句(s)> ``` 在 try 块中编写可能会出现异常的代码,当程序运行出现异常时,Python 会自动跳转到 except 块中执行异常处理代码,最后无论是否出现异常,都会执行 finally 块中的代码。 在 except 块中,可以指定处理异常类型,如果发生的异常类型符合指定的异常类型,则执行 except 块中的处理代码。如果 except 块中没有指定异常类型,则会捕获所有的异常。如果有多种异常需要处理,可以使用多个 except 块来分别处理不同的异常类型。 在 finally 块中,可以编写无论是否出现异常都需要执行的代码。在这个代码块中通常会包含一些释放资源的操作,比如关闭文件、关闭数据库连接等等。 使用 try…except…finally… 结构可以使程序在发生异常时可以进行控制,可以进行异常捕获和处理,可以避免程序因为异常而停止运行,同时也使程序更加稳定和安全。 ### 回答3: Python中的异常处理是指程序在运行时发生错误时,采取一些措施对错误进行处理的方式。而try...except...finally...则是Python中常见的异常处理语句之一。try语句用于捕获异常,except语句用于处理异常,finally语句则是不管有没有异常都会执行的语句。 try语句的基本语法如下: try: 代码块 except 异常类型: 异常处理代码块 代码块指的是可能会发生异常的代码块,而except语句中的异常类型则是指在发生该类型的异常时执行该代码块。 例如: try: a = int("abc") print("a="+str(a)) except ValueError: print("捕获到ValueError异常") 上述代码中尝试将字符串"abc"转换为整数,会发生ValueError类型的异常,因此执行except ValueError语句块中的代码。 同时,try语句也支持多个except块,用于处理不同类型的异常。例如: try: a = 1/0 except ZeroDivisionError: print("捕获到ZeroDivisionError异常") except Exception as e: print("捕获到以下异常:"+str(e)) 在上例中,尝试将1除以0会发生ZeroDivisionError异常,因此执行except ZeroDivisionError语句块中的代码块;同时a/0还可能引发其他异常,因此可以使用except Exception语句块捕获所有异常,并输出异常信息。 此外,try语句块还可以搭配finally语句块使用,尤其是在需要进行紧急操作释放资源的时候。例如: try: f = open("test.txt", "r") data = f.read() print(data) except FileNotFoundError: print("文件不存在") finally: if f: f.close() 在上述代码中,try语句块尝试打开文件test.txt并读取数据,如果文件不存在则会发生FileNotFoundError异常,通过except语句块处理。而finally语句块中的代码则是无论是否发生异常都将会执行的代码块,避免资源无法释放而造成的性能和安全问题。 总之,try...except...finally...是Python的非常常用的异常处理语句,能够保证程序在异常情况下仍然能够正常运行,同时也避免了各种潜在问题的出现。因此,深入了解和熟练运用异常处理语句是每个Python程序员必备的技能之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘阿童木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值