zerodivisionerror什么意思python-python里的raise是什么意思
我们在开发当中经常会遇到一些未知或已知的错误,比如用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 '不管是否发生异常都执行'
zerodivisionerror什么意思python-python里的raise是什么意思相关推荐
- Python函数里的爱情故事
Python语言的学习中,有很多有意思的事件,本文就像大家展示了Python函数里的爱情故事,告诉大家其实编程还能这么去用,希望对大家的学习Python语言有所帮助 一直被拒型 def my_love ...
- python 数据分析里axis=0/1 行列定义为什么每次都不同?(比如pandas, numpy, DataFrame)
在numpy中, axis=0表示按列操作, axis=1表示按行操作 [20190819 作者注] 作者看了之后, 表示对以上结论表示怀疑 参考文章1: python数据分析里axis=0/1 行列 ...
- python语言里数字包括_4.1Python语言中的数字、字符串数据类型讲解
标准数据类型 Python3 中有六个标准的数据类型: int bool float complex(复数) Number(数字) String(字符串) List(列表) Tuple(元组) Set ...
- python中类里self_Python类中的self到底是干啥的
Python类中的self到底是干啥的 Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的 ...
- [转载] 当心掉进Python多重继承里的坑
参考链接: Python多重继承 关于类的知识点里面,有一块是关于多重继承,跟其他主流语言一样,Python也支持多重继承,多重继承虽然有一些好处,但是坑很多,我们今天就来聊一聊Python多重继承里 ...
- python: python语法
python入门 文章目录 python入门 3.1学习新语言的步骤 3.1.1为什么要设计python? 3.1.2 python的应用领域 3.2搭建python开发环境 3.2.1安装的说明 3 ...
- “人生苦短,我用Python“——python基础<3>
python变成入门总结3 字符串 什么是字符串的驻留机制? 字符串的查询操作 字符串的大小写转换操作 字符串内容对齐操作 字符串分隔操作方法 判断字符串的方法 字符串操作的其他方法 字符串的比较操作 ...
- [PYTHON]python 基础笔记(1)
最近一直在研究python... 自学了一段时间,感觉对我这种本身脑子转不过弯的人来是真心是个不错的选择.. 以下是自己学习总结的笔记,有需要的朋友可以用来参考. 系统版本: Centos6.3 x6 ...
- 从scratch到python轻松学下载_STEAM教育-[少儿创客] 从Scratch到Python——python turtle-电路城论坛 - 电子工程师学习交流园地...
从Scratch到Python--python turtle 一种比pygame更加简洁的实现 现在很多学校都开设了Scratch课程,学生可以利用Scratch创作丰富的作品,然而Scratch之后 ...
- 初识python——python的发展历程及python各个版本之间的区别,python的安装
初识python--python的发展历程及python各个版本之间的区别,python的安装 什么是python python的起源 python主要发展历程 python各个版本之间的区别 如何选 ...
最新文章
- 一道神坑题 POJ3026 Borg Maze BFS+prim算法
- 内部人看FaceBook
- python面试题及答案-5个很好的Python面试题问题答案及分析
- hibernate一级缓存和二级缓存的区别[转]
- php读取js验证码,js实现获取短信验证码实例
- php操作mysql的封装类_PHP封装的mysqli数据库操作类示例
- SAP CRM Fiori应用里取top20的service url的determine逻辑
- android 调出键盘表情_Android 软键盘和emoji表情切换方案,和微信几乎一样的体验...
- 字符动图_手把手教你做一个python+matplotlib的炫酷的数据可视化动图
- sharepoint timer job 读取config文件内容
- Java与Http协议
- python 深度 视差 计算_python-窗口代价计算视差
- python输出运行时间_分析python程序运行时间的几种方法
- Python: TensorFlow2.4与CUDA11.1缺失 ‘cusolver64_10.dll‘动态库
- 北京户口 - 百度百科
- python发明小故事简写_科学发明小故事10字以上
- GET data:image/jpg;base64,35,37,....... net::ERR_INVALID_URL
- 关于qt使用sqlist数据库的注意事项
- 关于office/word/excel/powerpoint/ppt弹出“配置进度”的解决办法
- jsonp跨域原理解析