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

发布时间:2024年01月18日

声明

本文将介绍有关异常和异常捕捉的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文件,因此他会执行出结果为

哈哈

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

文章来源:https://blog.csdn.net/2303_77022382/article/details/135659399
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。