自学内容网 自学内容网

python异常处理——try

1、为什么要进行异常:

 当程序出现异常,不中断程序处理(将程序处理顺序,转移到提前的设定好的条件中执行)

2、异常处理写法

try:
   可能会出现异常的代码
except 可能会出现的异常:
 出现异常后的要怎么做

执行逻辑:
首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。
如果没有异常发生,忽略 except 子句,try 子句执行后结束。
如果在执行 try 子句的过程中发生了异常,那么 try 子句(余下的部分将被忽略)。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。
如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中

3、常见异常种类

异常异常解释
zeroDivisionError0 不能作为除数,触发异常
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
NameError未声明初始化对象(没有属性)
SyntaxErrorpython语法错误
ValueError传入无效参数
TypeError#类如int 不能与 str 相加,触发异常
OSError操作系统异常(如:文件打开异常)
keyboardInterrupt键盘中断错误(如:Ctrl+c使得程序异常退出)
SystemExit由sys.exit()引发(唯一一个不被认为错误的异常)
RuntimeError(运行时错误)程序运行到一半,程序崩溃了
Base Exception(Exception)所有异常的父类

4、示例

def  name():
    try:
        print(n)
    except NameError  as e:
        print("出现变量未定义异常")

name()

结果:

出现变量未定义异常

Process finished with exit code 0

5、常见用法

1)try同时处理多个异常

def yc2(x,y)->int:
    try:
        result = x/y
    except (ZeroDivisionError,NameError,RuntimeError) as e:
        print(f"输入异常异常类为:{e}")

yc2(1,0)

结果:
输入异常异常类为:division by zero

2)常见结构:

def  yc():
    f = None
    try:
        f = open("C:/Users/Desktop/fsdownload/1.txt","r")
    except NameError  as e:
        print("出现变量未定义异常")
    except ZeroDivisionError as e:
        print("分母不能为0")
    except exception as e:
        print("输入异常")
    finally:
        if f:
            print(f.read())
            f.close()

yc()

结果:
"E:\python\python project\venv\Scripts\python.exe" "E:/python/python project/venv/Scripts/异常处理.py"
仰天大笑出门去,我辈岂是蓬蒿人
豫章故郡,洪都新府
落霞与孤鹜齐飞,秋水共长天一色

a、except exception as e :捕获所有异常
b、finally 最终都要执行的语句

6、异常传递

函数间相互调用时,主函数的限定适用于被调函数

def yc2(x,y)->int:
    result = x/y


def main(x,y):
    try:
        print("这是一个除法:")
        yc2(x,y)
    except (ZeroDivisionError, NameError, RuntimeError) as e:
        print(f"输入异常异常类为:{e}")

main(1,0)

结果:
这是一个除法:
输入异常异常类为:division by zero

原文地址:https://blog.csdn.net/qingyulee/article/details/143812340

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!