[python面向对象学习笔记七] 异常
发布日期:2021-05-07 00:09:12 浏览次数:26 分类:精选文章

本文共 2335 字,大约阅读时间需要 7 分钟。

1.概念

程序运行时,如果python解释器遇到一个错误,会停止程序的执行,提示错误信息,这就是抛出异常

程序员通过异常捕获,可以针对突发事件做处理,不让程序因为报错而终止。

2.捕获异常

(1)简单的捕获异常语法

对某些不能确定是否正确的代码,可以增加try(尝试)来捕获异常,并加以处理。

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

例子:要求用户输入整数

try:    num = int(input("请输入一个整数:"))  # 不能确定正确执行的代码except:    print("请输入正确的整数!")            # 错误的处理代码print("-" * 50)                          # 无论是否出现错误,程序均会执行后续的代码输出:请输入一个整数:1.2请输入正确的整数!--------------------------------------------------

(2)错误类型捕获

针对不同类型的异常,做出不同的响应。

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

语法格式:

try:    # 不能保证正确的代码except 错误类型1:    # 针对错误类型1的处理except (错误类型2, 错误类型3):    # 针对错误2,3的处理except Exception as result:   # 固定语法,针对其他错误类型    print("未知错误 %s" % result)

例子:提示用户输入一个整数,使用8除以这个整数并输出。

有两种错误的可能类型:① 用户输入的不是整数 ②用户输入的是0,分母不能为0

try:    num = int(input("请输入一个整数:"))    result = 8/num    print(result)    except ZeroDivisionError:    print("除0错误")except ValueError:    print("请输入整数")    except Exception as result:      print("未知错误 %s" % result)输出:请输入一个整数:a请输入整数

3.异常捕获的完整语法

try:    # 不能保证正确的代码except 错误类型1:    # 针对错误类型1的处理except (错误类型2, 错误类型3):    # 针对错误2,3的处理except Exception as result:   # 固定语法,针对其他错误类型    print("未知错误 %s" % result)else:    # 没有异常才会执行的代码finally:    # 无论是否有异常,都会执行的代码

代码正确:try——> else ——> finally

代码有错误:try——> except ——> finally

例子:

try:    num = int(input("请输入一个整数:"))  # 不能确定正确执行的代码    result = 8 / num    print(result)except ValueError:    print("请输入正确的整数!")            # 错误的处理密码except Exception as result:    print("未知错误 %s" % result)else:    print("尝试成功")finally:    print("都会执行")print("-" * 50)输出:请输入一个整数:0未知错误 division by zero都会执行--------------------------------------------------

4.异常的传递

函数/方法 执行 出现异常,会将异常往上传递给 函数/方法 调用的一方。直到传到主程序,仍然没有异常处理,程序才会被终止。

因此,在开发中,可以在主程序中,利用异常的传递性,增加异常捕获。这样就不需要在代码中增加大量的异常捕获了,保证代码的简洁性。

例子:

def demo1():    return int(input("输入整数:"))def demo2():    return demo1()# 在主程序中,利用异常的传递性,捕获异常try:    print(demo2())except Exception as result:    print("未知错误 %s" % result)

5.主动抛出异常

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

语法:

① 创建一个 Exception 对象。Exception 是python提供的专门的异常类。
② 使用 raise 关键字抛出异常对象。

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

def input_password():    pwd = input("请输入密码:")    if len(pwd) >= 8:        return pwd    else:        ex = Exception("密码长度不够")   # 创建异常对象,可以使用错误信息字符串作为参数        raise ex                        # 主动抛出try:    print(input_password())except Exception as result:    print(result)输出:请输入密码:1234密码长度不够
上一篇:[python面向对象学习笔记八] 模块和包
下一篇:[python面向对象学习笔记六] 单例

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月28日 06时02分07秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章