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

  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/wjywinner/p/10322583.html
Copyright © 2011-2022 走看看