python raise_python raise
当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
演示raise用法
try:
s = None
if s is None:
print "s 是空对象"
raise NameError #如果引发NameError异常,后面的代码将不能执行
print len(s) #这句不会执行,但是后面的except还是会走到
except TypeError:
print "空对象没有长度"
s = None
if s is None:
raise NameError
print 'is here?' #如果不使用try......except这种形式,那么直接抛出异常,不会执行到这里
触发异常
我们可以使用raise语句自己触发异常
raise语法格式如下:
raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
实例
一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。
定义一个异常非常简单,如下所示:
def functionName( level ):
if level < 1:
raise Exception("Invalid level!", level)
# 触发异常后,后面的代码就不会再执行
注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。
例如我们捕获以上异常,"except"语句如下所示:
try:
正常逻辑
except Exception,err:
触发自定义异常
else:
其余代码
实例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 定义函数
def mye( level ):
if level < 1:
raise Exception,"Invalid level!"
# 触发异常后,后面的代码就不会再执行
try:
mye(0) # 触发异常
except Exception,err:
print 1,err
else:
print 2
执行以上代码,输出结果为:
$ python test.py
1 Invalid level!
python3.6以后 改为
def mye( level ):
if level < 1:
raise Exception("Invalid level!")
# 触发异常后,后面的代码就不会再执行
try:
mye(0) # 触发异常
except Exception as err:
print(1,err)
else:
print(2)
承接Matlab、Python和C++的编程,机器学习、计算机视觉的理论实现及辅导,本科和硕士的均可,咸鱼交易,专业回答请走知乎,详谈请联系QQ号757160542,非诚勿扰。
本文同步分享在 博客“于小勇”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
python raise_python raise相关推荐
- python raise_python raise 使用方法
是否可以在程序的指定位置手动抛出一个异常?答案是肯定的,Python 允许我们在程序中手动设置异常,使用 raise 语句即可. 读者可能会感到疑惑,即我们从来都是想方设法地让程序正常运行,为什么还要 ...
- Python 异常处理--raise函数用法
Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...
- python用raise手动抛出异常
python用raise手动抛出异常 文章目录: raise: 就是手动抛出异常 格式: 格式:raise [exceptionType[,argument][,traceback]] 举例子1: d ...
- python里raise是什么意思_Python中raise与raise...from之间有何区别?
本篇文章给大家带来的内容是关于Python中raise 与 raise ... from之间有何区别?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 起步 Python 的 raise ...
- Python 中 raise 和 raise/from 的区别
Python 中 raise 和 raise/from 的使用方法 文章目录 Python 中 raise 和 raise/from 的使用方法 0. 参考资料 1. 代码比较 2. 用法解释 2.1 ...
- python中raise和raise e区别_python raise和assert的区别
python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...
- python里raise_python – “raise”和“raise e”之间的区别?
在 python中,除了块之间的提升和提升之间有区别吗? dis显示我不同的结果,但我不知道这是什么意思. 两者的最终行为是什么? import dis def a(): try: raise Exc ...
- python 抛出异常raise
原因: 测试数据的时候命名找不到该文件,但是通过try except的执行状态却为"成功" 查找为什么出错了仍可以继续运行try 分支: p = os.system('pytho ...
- python中raise stoplteration_推导表达式迭代器生成器模块和包 | 编程电脑技术交流...
魔法方法需要特定的条件去触发 有next是迭代器 # li = [] # for i in range(1,10): # li.append(i) # print(li) # ------------ ...
最新文章
- 美国AI博士指出:60天掌握Python全栈需要...
- DotNet 开发团队图
- 科大星云诗社动态20201216
- C# 8.0 抢先看-- Async Stream
- 使用简单的Java代码在SAP C4C里创建销售订单
- 通过示例了解Apache Ignite Baseline拓扑
- HTML+CSS---定位(相对定位--绝对定位--固定定位--设置元素的层叠顺序)---表单---设置光标样式---透明度(opacity属性定义元素的不透明度--IE的半透明滤镜)---外边线
- notepad拼心形_配置基于NotePad++工具下的C#开发环境
- ❤️再也不用为了重写方法而苦恼了,Lombok帮你解决!
- 分享:国外著名代码管理网站GitHub访问方式
- php原始 实现双向队列,用PHP实现一个双向队列
- python urllib3 使用_使用Python URLLIB3下载文件
- 按月分隔时间段,java实现,DateRange
- CodeForces - 884B Japanese Crosswords Strike Back
- linux lilo密码,LILO Security
- “5g+工业互联网”,工业生产制造迎来新突破
- 遇到Process finished with exit code -1073740791 (0xC0000409)实在不能解决的时候要注意
- linux系统各服务相关设置
- Linux不完全手册(一)(转)
- CRM八面体:了解客户关系管理的结构