13-异常

作者: 飘摇的水草 | 来源:发表于2023-04-10 20:39 被阅读0次
简介

程序运行过程中,代码遇到的错误,给出错误的提示
异常:程序代码在运行过程中遇到的错误,程序会报错,会终止程序代码的运行

捕获异常
  • 异常捕获:是指在程序代码运行过程中,遇到错误,不让程序代码终止,让其继续运行,同时可以给使用者一个提示信息,并记录这个错误,便于后期改进
  • 规则如下:
try: 
    可能发生异常的代码
except 异常的类型:
    发生异常执行的代码

示例代码如下所示:

try:
    num = input("请输入一个数字:")
    num = 10 / int(num)
except ZeroDivisionError:
    print "你输入有错,请重新输入"

在上面的代码里只能捕获 ZeroDivisionError 这种类型的异常

捕获多个类型的异常

要想捕获多个类型的异常,可以写多个 try except,也可以在 except 那里将多个异常组成元组,如下所示:

try:
    a = input("请输入一个数字:")
    num = int(a)
    num = 10 / num
except  (ZeroDivisionError , ValueError ):
    print "你输入有错,请重新输入"

或者写成下面这种

try:
    a = input("请输入一个数字:")
    num = int(a)
    num = 10 / num
except ZeroDivisionError:
    print "你输入有错,请重新输入"
except ValueError:
    print "请输入数字"
打印异常信息

通过添加 as 的方式打印出异常信息,如下所示:

try:
    a = input("请输入一个数字:")
    num = int(a)
    num = 10 / num
except ZeroDivisionError as e:
    print ("你输入有错,请重新输入", e)
except ValueError:
    print "请输入数字"
捕获所有的异常

通过下面的方式可以捕获所有的异常信息

try:
    # 可能发生异常的代码
except Exception as e :
    # 发生异常执行的代码
     print e
异常的完整结构
try:
    # 可能发生异常的代码
except Exception as e :
    # 发生异常执行的代码
     print e
else:
    # 代码没有发生异常会执行
finally:
    #不管有没有发生异常,都会执行
异常的传递

这个是异常处理的底层机制,是原理层面上的,不需要我们自己写代码实现,是python已经实现好的

抛出自定义异常

程序代码报错的原因是不符合语法,Python 的作者在代码中使用了 if 判断,如果代码有错就抛出异常错误:

抛出异常:
       raise 异常对象

抛出自定义异常:
       1. 自定义异常类,继承 `Exception` 或者 `BaseException`
       2. 选择书写,定义 `__init__` 方法,定义 `__str__` 方法
       3. 在合适的时机抛出异常对象即可 

如下所示:

class Password(Exception):

    def get_password(self):
        password = input("请输入密码:")
        if len(password) >= 6:
            print "密码长度合格"
        else:
            raise PasswordLengthError("长度不足6位")

try:
    get_passwod()
except PasswordLengthError as e:
    print e

相关文章

  • 13-异常处理&文件操作

    一、错误和异常 1.概念 两种容易辨认的错误 exception/error 代码演示: 异常特点:当程序在执行的...

  • 13-异常处理&代码调试&单例模式

    一、错误和异常 1.概念 两种容易辨认的错误​ 语法错误:一些关于语法的错误【缩进】​ 异常:代码完全正确,但是,...

  • 李善友课程笔记13-从递弱代偿原理中推导出非连续性模型

    李善友课程笔记13-从递弱代偿原理中推导出非连续性模型

  • OC底层原理14-消息转发机制

    我们在 OC底层原理13-动态方法决议[https://www.jianshu.com/p/a7550ccefae...

  • 民情日记—103

    2018年9月13日 星期四 今天,继续昨天的工作。…… 2018/9/13-杨洪富

  • 13-画布

    复习JS高级 1、构造函数 如果一个函数配合new关键字创建对象,那么这个函数就可以称之为构造函数。 构造函数有个...

  • 13-继承

    实现继承 1.借用构造函数(第一种) 1.先把大范围的构造函数写出来 2.借用大范围的构造函数创造对象 3.缺点:...

  • 13-列表

    List定义 列表是python中使用最频繁的数据类型,在其他语言中称为数组。 专门用于存储一窜信息。 列表用[]...

  • 13-时钟

    时间由服务器传过来的 var now = new Date() var future = new Date(201...

  • 13-类

    面向对象 面向对象编程:OOP是利用“类”和“对象”来创建各种模型开实现对现实世界的描述,使用面向对象编程的原因一...

网友评论

      本文标题:13-异常

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