美文网首页
Python 面向对象 - 08 异常

Python 面向对象 - 08 异常

作者: flowerflower | 来源:发表于2019-03-04 21:42 被阅读0次
😘😘

目录
一、概念
二、捕获异常
2.1 简单的捕获异常语法
2.2 错误类型捕获
2.3 异常捕获完整语法
三、异常的传递
四、抛出 raise 异常

一、概念

  • 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常

二、捕获异常

2.1 简单的捕获异常语法

try:
    尝试执行的代码
except:
    出现错误的处理
  • try 尝试,下方编写要尝试代码,不确定是否能够正常执行的代码
  • except 如果不是,下方编写尝试失败的代码

2.2 错误类型捕获

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

  • 语法如下:

try:
    # 尝试执行的代码
    pass
except 错误类型1:
    # 针对错误类型1,对应的代码处理
    pass
except (错误类型2, 错误类型3):
    # 针对错误类型2 和 3,对应的代码处理
    pass
except Exception as result:
    print("未知错误 %s" % result)
  • Python 解释器 抛出异常 时,最后一行错误信息的第一个单词,就是错误类型
num = int(input("输入一个整数: "))

result = 8 / num

print(result)
图片.png

需求:

  1. 提示用户输入一个整数
  2. 使用 8 除以用户输入的整数并且输出
try:
    num = int(input("请输入整数:"))
    result = 8 / num
    print(result)
except ValueError:
    print("请输入正确的整数")
except ZeroDivisionError:
    print("除 0 错误")

捕获未知错误

  • 在开发时,要预判到所有可能出现的错误,还是有一定难度的
  • 如果希望程序 无论出现任何错误,都不会因为 Python 解释器 抛出异常而被终止,可以再增加一个 except

语法如下:

except Exception as result:
    print("未知错误 %s" % result)

2.3 异常捕获完整语法

try:
    # 尝试执行的代码
    pass
except 错误类型1:
    # 针对错误类型1,对应的代码处理
    pass
except 错误类型2:
    # 针对错误类型2,对应的代码处理
    pass
except (错误类型3, 错误类型4):
    # 针对错误类型3 和 4,对应的代码处理
    pass
except Exception as result:
    # 打印错误信息
    print(result)
else:
    # 没有异常才会执行的代码
    pass
finally:
    # 无论是否有异常,都会执行的代码
    print("无论是否有异常,都会执行的代码")
  • else 只有在没有异常时才会执行的代码

  • finally 无论是否有异常,都会执行的代码

  • 完整捕获异常 的代码如下:

try:
    # 尝试执行的代码
    num = int(input("输入一个整数: "))
    result = 8 / num
    print(result)

except ValueError:
    print("请输入正确的整数")
except ZeroDivisionError:
    print("除0错误")
except Exception as result:
    # 打印错误信息
    print("未知错误 %s" % result)
else:
    print("没有异常才会执行的代码")
finally:
    print("无论是否有异常,都会执行的代码")

三、异常的传递

  • 异常的传递 —— 当 函数/方法 执行 出现异常,会 将异常传递 给 函数/方法 的 调用一方
  • 如果 传递到主程序,仍然 没有异常处理,程序才会被终止

在开发中,可以在主函数中增加 异常捕获
而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的 异常捕获
这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁

需求

  1. 定义函数 demo1() 提示用户输入一个整数并且返回
  2. 定义函数 demo2() 调用 demo1()
  3. 在主程序中调用 demo2()
def demo1():
    return int(input("请输入一个整数:"))
def demo2():
    return demo1()
try:
    print(demo2())
except ValueError:
    print("请输入正确的整数")
except Exception as result:
    print("未知错误 %s" % result)


四、抛出 raise 异常

  • Python 中提供了一个 Exception 异常类
  • 在开发时,如果满足 特定业务需求时,希望 抛出异常,可以:
    1. 创建 一个 Exception对象
    2. 使用 raise 关键字 抛出 异常对象

需求

  • 定义 input_password 函数,提示用户输入密码
  • 如果用户输入长度 < 8,抛出异常
  • 如果用户输入长度 >=8,返回输入的密码

def input_password():
    pwd = input("请用户输入密码")
   # 如果用户输入长度 < 8,抛出异常
    if len(pwd) < 8:
        print("主动抛出异常")
        # 1.创建异常对象 - 使用异常的错误信息字符串作为参数
        ex = Exception("密码长度不够")
       # 2.抛出异常对象
        raise  ex


# 如果用户输入长度 >=8,返回输入的密码
    if len(pwd) >= 8:
        return  pwd
#
try:
    print(input_password())
except Exception as result:
    print("----%s" % result)
图片.png

相关文章

  • Python 面向对象 - 08 异常

    目录一、概念二、捕获异常2.1 简单的捕获异常语法2.2 错误类型捕获2.3 异常捕获完整语法三、异常的传递四、抛...

  • python学习笔记目录

    Python学习笔记目录(倒序) Python学习-异常 Python学习-面向对象 Python学习-文件系统 ...

  • day08.面向对象一【Python教程】

    day08.面向对象一【Python教程】 一、面向对象编程介绍 想一想 请用程序描述如下事情: A同学报道登记信...

  • Python 面向对象 8: 异常

    一、内容总览 1.1、异常的概念 1.2、捕获异常 1.3、异常的传递 1.4、抛出异常 二、异常的概念 2.1、...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Python 面向对象编程

    Python 面向对象编程(一) Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象...

  • Python Debug

    常用方法 try...except 方法捕获异常 Python----面向对象---try....except的详...

  • 2.1.3 Python面向对象之异常处理

    点击跳转笔记总目录 Python面向对象之异常处理 一、错误与异常 二、异常处理 三、什么时候用异常处理 一、错误...

  • python基础-02

    Python 面向对象 python是一门面向对象的语言 Python内置类属性 python对象销毁(垃圾回收)...

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

网友评论

      本文标题:Python 面向对象 - 08 异常

      本文链接:https://www.haomeiwen.com/subject/qyheyqtx.html