《Python编程从入门到实践》记录之文件异常(try-except-else代码块)

目录

1、try-except代码块

2、else代码块


Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。当程序发生错误时,Python会创建一个异常对象。如果编写了处理异常的代码,程序将继续运行;如果未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

异常是使用try-except代码块处理的。try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-except代码块时,即便出现异常,程序也将继续运行,显示编写的友好信息,而不是traceback。


1、try-except代码块

可以使用try-except来处理可能发生的错误。

处理ZeroDivisionError异常的try-except代码块类似如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

try:
    print(5/0)
except ZeroDivisionError:
    print("You can't divide by zero!")

我们将导致错误的代码行print(5/0) 放在了一个try代码块中。如果try 代码块中的代码运行起来没有问题,Python将跳过except代码块; 如果try代码块中的代码导致了错误,Python将查找这样的except代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。
在这个示例中,try代码块中的代码引发了ZeroDivisionError异常, 因此Python指出了该如何解决问题的except代码块,并运行其中的代码。这样,用户看到的是一条友好的错误消息,而不是traceback:


2、else代码块

else代码块:依赖于try代码块成功 执行的代码都应放到else代码块中。

try-except-else代码块的工作原理大致如下:

  • Python尝试执行try代码块中的代码;只有可能引发异常的代码才需要放在try语中。
  • 有时候,有一些仅在try代码块成功执行时才需要运行的代码;这些代码应放在else代码块中。
  • except代码块告诉Python,如果它尝试运行try 代码块中的代码时引发了指定的异常,该怎么办。

下边例子是使用try-except-else执行除法运算的简单例子:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")

while True:
    first_number = input("\nFirst number: ")
    if first_number == 'q':
        break
   
    second_number = input("Second number: ")
    if second_number == 'q':
        break
    
    try:
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError:
        print("You can't divide by 0!")
    else:
        print(answer)

上述代码Python尝试执行try代码块中的除法运算, 这个代码块只包含可能导致错误的代码。依赖于try代码块成功执行的代码都放在else代码块中;在这个示例中,如果除法运算成功,就使用else代码块来打印结果 。

except代码块告诉Python,出现ZeroDivisionError异常时该怎么办。如果try代码块因除零错误而失败,我们就打印一条友好的消息,告诉用户如何避免这种错误。程序将继续运行,用户根本看不到traceback:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值