我们在开发当中经常会遇到一些未知或已知的错误,比如用requests发送请求时可能会出现异常,或者某个程序计算时出现分母为0的情况。面对各种奇形怪状的错误,高级语言都会有一个抛出错误的机制。在Python中,他就是raise了。

raise()

raise是什么意思呢?raise是用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。

抛出异常和自定义异常

Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

raise 语句

Python中的raise 关键字用于引发一个异常,基本上和C#和Java中的throw关键字相同,如下所示:

def ThorwErr():

raise Exception("抛出一个异常")

# Exception: 抛出一个异常

ThorwErr()

raise关键字后面是抛出是一个通用的异常类型(Exception),一般来说抛出的异常越详细越好,Python在exceptions模块内建了很多的异常类型,通过使用dir函数来查看exceptions中的异常类型,如下:

import exceptions

# ['ArithmeticError', 'AssertionError'.....]

print dir(exceptions)

传递异常

捕捉到了异常,但是又想重新引发它(传递异常),可以使用不带参数的raise语句即可:

class MuffledCalculator:

muffled = False

def calc(self,expr):

try:

return eval(expr)

except ZeroDivisionError:

if self.muffled:

print 'Division by zero is illegal'

else:

raise

自定义异常类型

Python中也可以自定义自己的特殊类型的异常,只需要要从Exception类继承(直接或间接)即可:

class SomeCustomException(Exception):

pass

捕捉异常

捕捉一个异常

和C#中的try/catch类似,Python中使用try/except关键字来捕捉异常,如下:

try:

print 2/0

except ZeroDivisionError:

print '除数不能为0'

捕捉多个异常

在一个except语句只捕捉其后声明的异常类型,如果可能会抛出的是其他类型的异常就需要再增加一个except语句了,或者也可以指定一个更通用的异常类型比如:Exception,如下:

try:

print 2/'0'

except ZeroDivisionError:

print '除数不能为0'

except Exception:

print '其他类型异常'

为了捕获多个异常,除了声明多个except语句之外,还可以在一个except语句之后将多个异常作为元组列出来即可:

try:

print 2/'0'

except (ZeroDivisionError,Exception):

print '发生了一个异常'

获取异常信息

每个异常都会有一些异常信息,一般情况下我们应该把这些异常信息记录下来:

try:

print 2/'0'

except (ZeroDivisionError,Exception) as e:

# unsupported operand type(s) for /: 'int' and 'str'

print e

finally子句

finally子句和try子句联合使用但是和except语句不同,finally不管try子句内部是否有异常发生,都会执行finally子句内的代码。所有一般情况下,finally自己常常用于关闭文件或者在Socket中。

try:

print 2/'0'

except (ZeroDivisionError,Exception):

print '发生了一个异常'

finally:

print '不管是否发生异常都执行'

在python中可以用什么关键字来声明一个类_python里的raise是什么意思相关推荐

  1. 在python中可以用什么关键字来声明一个类_Python 定义类

    说明 Python 教程正在编写中,欢迎大家加微信 sinbam 提供意见.建议.纠错.催更. 类是面向对象开发的核心思想,可以解决我们现实生活的复杂问题.在了解了类的基本概念,我们来学习一下怎么定义 ...

  2. 在python中可以用什么关键字来声明一个类_3. Python基础语法

    注释 我们在文言文中经常会看到注释,注释可以帮助读者对文章的理解.代码中的注释也是一样,优秀的代码注释可以帮助读者对代码的理解.当然在代码编写过程中,注释的使用不一定只是描述一段代码,也可能的是对代码 ...

  3. python语言用什么关键字来声明一个类_Python语言和标准库(第三章:类和对象)...

    python如何将函数和数据整合在一起,并且通过一个对象的名称访问它们. 如何和为什么使用类与对象,以及他们如何使编程人员易于多种情形下编写和使用程序. 3.1考虑编程 现在要在python中创建一个 ...

  4. python语言用什么关键字来声明一个类_python使用什么关键字定义类

    什么是类? 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下:class ...

  5. python中定义函数常用关键字_Python 中定义函数的关键字是 _________________ 。_学小易找答案...

    [其它]实验4-串和数组-实验任务书.docx [填空题]表达式 'abc' in ['abcdefg'] 的值为______________. [填空题]已知 x = range(1,4) 和 y ...

  6. Python中定义函数的关键字是什么?一起来学习下吧

    python中定义函数的关键字是def. Python使用def关键字开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值, 在expressions ...

  7. 在python中、如果异常并未被处理或捕捉_Python异常处理总结

    本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下: 1. 抛出异常和自定义异常 Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常.如果 ...

  8. php声明一个类的关键字,php中怎么实例化一个类

    php中怎么实例化一个类 发布时间:2021-03-05 10:15:50 来源:亿速云 阅读:87 作者:小新 这篇文章主要介绍php中怎么实例化一个类,文中介绍的非常详细,具有一定的参考价值,感兴 ...

  9. NET面试题:在C#中如何声明一个类不能被继承

    NET面试题:在C#中如何声明一个类不能被继承 这个问题相对比较简单,应聘者对于这类问题应该不会感到什么难度,但读者更应该掌握的是,为什么要把类型申明为不可继承,这样做的原因是什么.   所涉及的知识 ...

最新文章

  1. batch normalization
  2. scikit-learn朴素贝叶斯各种用法总结真正讲明白的,为作者建平点赞
  3. object转成实体对象_程序员的浪漫,new一个对象
  4. idea中刷新项目快捷键_解决 IDEA 使用过程中让你觉得不爽的一些问题
  5. C++拷贝构造函数(深拷贝与浅拷贝)
  6. 【数据库系统概论】考研第三部分重点分析【3.2】
  7. 速度优化_网站打开速度慢?如何优化?
  8. MySQL如何发型不乱的应对半年数十TB数据增量
  9. SQL中Group By的用法整理
  10. 一文读懂常用开源许可证
  11. MCGS 无限配方数据存储及U盘导入导出-第二集
  12. 图解TCPIP-ARP
  13. 字符串匹配算法总结(转)
  14. 软考程序员java_软考程序员难吗?
  15. 按键精灵开发后台命令脚本的操作教程
  16. c语言延时函数(c语言延时函数delay用法)
  17. NVIDIA显卡驱动报错
  18. Java中的十大组织
  19. 浅谈Api框架神器Swagger2
  20. 在 Jenkins 上轻松重用 Tekton 和 Jenkins X

热门文章

  1. 图文详解 Windows 2003服务器集群安装(5)(完)
  2. 学校计算机大赛的工作总结,工作总结之中国大学生计算机设计大赛参赛经验与总结...
  3. 亲爱的老狼-html的格式含义全面说明
  4. 线性代数方程组数值解法
  5. Android常用UI
  6. 区块链常见共识算法(consensus)
  7. 用excel做anova分析
  8. 你的眼睛应该是灰色的,像钢铁一般的颜色
  9. CSS3 特殊字体@font-face
  10. Spring MVC ModelAndView 简述