栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python | 异常

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python | 异常

一、异常

程序在运行时,如果解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常。程序停止执行并提示错误信息 这个动作,称之为 抛出(raise)异常。

程序开发时,很难将所有的特殊情况都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序的 稳定性和健壮性

二、捕获异常 1、简单的捕获异常语法

在程序开发中,如果对某些代码的执行不确定是否正确,可以增加 try 来捕获异常

try:
    尝试执行的代码
except:
    出现错误处理

try:尝试,下方编写要尝试代码,不确定能否正常执行的代码

except:如果不是,下方编写尝试失败的代码

eg:要求用户输入整数

try:
    num = int(input("请输入一个整数:"))
except:
    print("您输入正确的整数")

2、错误类型捕获

在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就学要捕获错误类型

语法如下:

try:
    #尝试执行的代码
    pass
except 错误类型1:
    #针对错误1,对应的代码处理
    pass
except 错误类型2:
    #针对错误2,对应的代码处理
    pass
#捕获没有预判到的未知错误
except Exception as result:
    print("未知错误 %s" %result)

当Python解释器抛出异常时,最后一行错误信息的第一个单词就是错误类型

eg:输入一个整数,返回被8除后的结果

try:
    num = int(input("输入一个整数:"))
    result = 8 / num
    print(result)
except ValueError:
    print("请输入一个整数!")
except ZeroDivisionError:
    print("0不能作为除数!")
except Exception as result:
    print("未知错误")
    

3、异常捕获完整语法
try:
    #尝试执行的代码
    pass
except 错误类型1:
    #针对错误1,对应的代码处理
    pass
except 错误类型2:
    #针对错误2,对应的代码处理
    pass
#捕获没有预判到的未知错误
except Exception as result:
    print("未知错误 %s" %result)
else:
    #没有异常才会执行的代码
    pass
finally:    
    #无论是否有异常都会执行的代码
    pass

三、异常的传递

异常的传递——当 函数/方法 执行出现异常,会将异常传递给 函数/方法 的调用一方

如果传递到主程序,仍然没有异常处理,程序才会被终止

<注>

在开发中,可以在主函数中增加异常捕获

而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中

这样就不需要在代码中,增加大量的异常捕获,能够保证代码的整洁

eg:定义函数demo1() 提示用户输入一个整数并返回,定义函数demo2()调用demo1(),在主函数中调用demo2()

四、抛出raise异常 1、应用场景

 在开发中,除了代码执行出错解释器会抛出异常之外,

还可以根据 应用程序特有的业务需求 主动抛出异常

2、抛出异常

Python中提供了一个Exception异常类

在开发时,如果满足 特定业务需求时,希望抛出异常,可以:

        (1)创建一个Exception的对象

        (2)使用 raise关键字 抛出 异常

eg:提示用户输入密码,如果长度少于8,抛出异常

def input_passwd():
    #1 提示用户输入密码
    pwd = input("请输入密码:")
    #2 判断密码长度 大于8 返回用户输入的密码
    if len(pwd) >= 8:
        return pwd
    #3 如果小于8  主动抛出异常
    print("主动抛出异常")
    #1 创建异常对象 可以使用错误信息字符串作为参数
    ex = Exception("密码长度不够")
    #2 主动抛出异常 
    raise ex

try:
    input_passwd()
except Exception as result:
    print(result)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/674700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号