python学习笔记-异常和异常的捕捉

本文详细介绍了Python中的异常处理,包括try-except的基本语法、不同形式的异常捕捉(如try-except,try-exceptExceptionase,try-except()),以及finally语句的使用。通过实例演示了如何捕获和处理常见的运行时错误。
摘要由CSDN通过智能技术生成

声明

本文将介绍有关异常和异常捕捉的try-except有关语句的基本使用。其中异常捕捉有try-except语句,try-except Exception as e语句,try-except()语句。

异常

这个就是平时我们运行程序时会报错,有各种出错的形式,如ZeroDivisionError(除零错误),NameError(未定义错误),TypeError: can only concatenate str (not "int") to str(str与int)不能相加的错误,等等。例如下面就是没有找到这个文件。 

捕获异常

try-except语句

基本语法格式,我将用下面这个例子进行讲解:

# try-except语句
try:
    # 打开E盘名字叫mill的文件(这在我的E盘原来是没有的)
    f = open('E:/mill.txt','r',encoding='UTF-8')
    print("哈哈")
except:
    f = open('E:/mill.txt', 'w', encoding='UTF-8')
    print("xixi")

运行结果为:

分析结果可以看出try下的语句没有运行,而except的语句运行了,我们就可以发现except已经把他捕捉到了。并且我已经使用了'w'模式解决了这个错误。此时我的E盘会生成这个叫mill的文件。

try-except()语句

首先如果是只需要查某一个的特定的错误,就可以使用这种形式:

try:
    # 我的E盘没有hello这个文件
    # a = x + y
    f = open("E:/hello.txt","r",encoding="UTF-8")
except NameError as e:
    print("有变量没有被定义")

这个代码是用来捕捉NameError的但是由于上文没有没有被定义的未知变量,并且由于我的E盘没有hello这个文件因此他就会报出‘没有找到这个文件’这个错误:

而当我讲 a=x+y这个注释放开后,由于try当中有没有被定义的错误,所以它就不会报错:

这样它就捕捉到了变量没有被定义的错误。

如果需要捕捉多个类型的错误即演示如下:

try:
    # 我的E盘没有hello这个文件
    a = x + y
    f = open("E:/hello.txt","r",encoding="UTF-8")
except (NameError,NotADirectoryError):
    print("有变量没有被定义或没有文件")

这里解释思路与上文一致,就不再赘述了。

try-except Exception as e语句(最常用)

这个也是捕获全部错误的一个语句,它的作用与try-except的使用效果一致,但是我们习惯性使用这个来捕捉全部的错误,代码演示如下:

try:
    # 我的E盘没有hello这个文件
    a = x + y
    f = open("E:/hello.txt","r",encoding="UTF-8")
except Exception as e:
    print("有变量没有被定义或没有文件")

这时他就会执行except后语句。

补充——finally的使用

如果再后面加上finally,则不管try后面是否有符合要求的错吴,fianlly后面的语句都会运行,即:

# try-except语句
try:
    # 打开E盘名字叫mill的文件(这在我的E盘原来是没有的)
    f = open('E:/mill.txt','r',encoding='UTF-8')
    print("哈哈")
except:
    f = open('E:/mill.txt', 'w', encoding='UTF-8')
    print("xixi")
finally:
    print("有没有这个文件我都会运行")

结果如下:

由于我前面已经运行过一次try-except所以E盘已经有了mill文件,因此他会执行出结果为

哈哈

有没有这个文件我都会运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值