博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于异常处理
阅读量:4975 次
发布时间:2019-06-12

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

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

异常处理的代码格式:

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

 

转载于:https://www.cnblogs.com/wjywinner/p/10322583.html

你可能感兴趣的文章
更新.net core 3.0,dotnet ef命令无法使用的解决办法
查看>>
React躬行记(13)——React Router
查看>>
前端利器躬行记(1)——npm
查看>>
前端利器躬行记(2)——Babel
查看>>
前端利器躬行记(6)——Fiddler
查看>>
Forbidden You don't have permission to access / on this server.
查看>>
Intellij Idea新建web项目(转)
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
centos iptables
查看>>
unity3d 移动与旋转 2
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
20120227_CET6
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
leetcode【67】-Bulb Switcher
查看>>