python学习笔记之异常处理try,except, finally用法

本文介绍了Python编程中的异常处理机制,包括try-except语句用于捕获和处理运行时错误,例如除以零错误和未定义变量异常。通过多个except子句可以处理多种类型的异常,同时可以配合else和finally子句,确保特定代码无论是否发生异常都会执行。还探讨了上下文管理器和with语句在文件操作中的应用,以提供更健壮的异常处理和资源管理。

在编写程序时我们常常会犯错,一般错误有三类:语法错误,运行时刻错误,逻辑错误。
如果解释器检测到错误就会终止程序执行,并报告错误类型。

比如下图一个0不能作为除数的异常和一个变量未被定义的异常,一旦出现,就会中止程序
在这里插入图片描述
我们可以用dir()命令查看异常类,以下就是python内建的一些常见的异常

在这里插入图片描述
这个时候就可以采用try-except语句来对异常进行捕捉处理
它的语法一般形式为

try:
    raise
except Exception as err:
    print(err)
 

当try后面的语句出现错误时,就执行except后面的语句块。
下面是分母不能为0的代码举例:

try:
    num1 = int(input('Enter the first number: '))
    num2 = int(input('Enter the second number: ))
    print(num1 / num2)
except ZeroDivisionError as err:
    print("The second number cannot be zero!')print(err)

这里num2不能为0 ,若输入num2为0 就执行except后的语句,输出异常原因。如果try后面的语句块没有检测到异常就跳过except,继续执行。其中print(err)可以打印出错误原因名。

我们不仅可以捕捉一个异常语句,还可以采用多个except子句和一个except块捕捉多个异常

#多个except
try:
    num1 = int(input('Enter the first number: ))
    num2 = int(input('Enter the second number: '))
    print(num1 / num2)
except ValueError:
    print('Please input a digit!')
except ZeroDivisionError:
    print('The second number cannot be zero!)


#单个except
try:
   num1 = int(input('Enter the first number: ))
   num2 = int(input('Enter the second number: '))
   print(num1 / num2)
except (ValueError, ZeroDivisionError):
   print(' Invalid input!)

而且,try.-except可以跟else语句

try:
    num1 = int(input('Enter the first number: '))
    num2 = int(input('Enter the second number: '))
    print(num1 / num2)
except(ValueError, ZeroDivisionError):
    print("Invalid input!')
else:
    print('Aha, everything is OK')

如果 在try语句下没有检测到异常,就输出’Aha, everything is OK’

另外,try.-except也可以结合finally使用。一个try可对应多个except,但try.-except只能对应一个finally。
try.-except-finally语句中,不管是否出现了 异常finally后的语句一定要执行。

最后谈一下上下文管理器和with语句

try:
   f= open('data.txt')
   for line in f:
   print(line, end= ")
except IOError:
   print('Cannot open the file!')
finally:
   f.close()

这里我们采用try.-except-finally语句执行了文件的异常处理和关闭,利用maly子句进行文件的关闭,我们假设文件都不能正常打开了,那么f变量其实并没有获得值,这里程序依然会出错,我们可以采用with语句,方便地使用上下文管理器,避免异常。

with open('data.txt') as f:
    for line in f:
       print(line, end=' )

这里先打开data文件赋给了变量f,再进行for循环把f按行输出,
with语句在文件处理时比try.-except-finally更健壮。

如果还有疑问可以继续参考下列链接的内容
干货!python妙招-异常处理之try-except]

https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9828970968195939769%22%7D

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值