zoukankan      html  css  js  c++  java
  • 关于异常处理

    首先,异常处理非常重要。在代码中,异常处理到处都是,异常处理保证了程序的正确正常运行。

    异常处理的代码格式:

    try:

      代码块  # 尝试执行的代码块

    except Exception(这里是异常类型,可以被捕获,也可以自定义)as 变量:

      对异常进行处理的代码块

    else:

      没有出现异常,执行这里

    finally:

      最后总是执行这里(例如关闭文件,内存写入硬盘等),收尾代码块

    通常用try。。。except。。。就可以了。最多加上finally

    但是,python定义的异常类型再多,也赶不上我们的需要。所以,我们需要自定义异常类。

    class Error(Exception):

      pass

    只要继承Exception类,就是自定义异常类。

    在代码中,可以i直接抛出自定义的异常。

    raise Error('这是自定义异常类的说明')

    利用异常可以实现约束

    一、在父类中,写出方法,但是不写任何代码,而是直接抛出 NotImplementError 异常(‘没有实现。。。方法’),这样,如果子类没有写出方法实现的代码,或者没有写同一个方法,那么运行时肯定抛出这个没有实现异常。

    二、在抽象类中写抽象方法,这种方法必须引入abc模块的ABCMeta和abstractmethod,格式如下:

    from abs import ABCMeta,abstractmethod  # 引入模块

    class Father(metaclass=ABCMeta):  # 定义抽象类(metaclass=ABCMeta),只要类中包含了抽象方法,那么这个类就是个抽象类,抽象类可以有普通方法,一个只有抽象方法的类,又叫做接口。

      @abstractmethod  # 抽象方法的定义语法

      def play(self):   # 定义一个抽象方法:play

        pass  #  抽象方法不写实现代码

    那么,Father类的子类就必须写出play方法的具体实现代码。否则子类也是一个抽象类。

    class Sun(Father):

      def play(self):

        print('这是play方法的具体实现代码')

    从而对子类实现了约束。

    模块traceback. 这个模块可以获取到我们每个⽅法的调⽤信息.又被称为堆栈信息. 这个信息对我们拍错是很有帮助的.

    import traceback

  • 相关阅读:
    python 可变数据类型&不可变数据类型
    java异常 总结
    java 进制转换
    在virtualbox下使用vm映像文件
    关于C语言中单双引号的问题
    php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
    fastadmin model关联模型 关联查询问题
    php 解决跨域问题
    微信支付相关
    TP5之事务处理
  • 原文地址:https://www.cnblogs.com/wjywinner/p/10322583.html
Copyright © 2011-2022 走看看