当程序出现错误,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相关推荐

  1. python raise_python raise 使用方法

    是否可以在程序的指定位置手动抛出一个异常?答案是肯定的,Python 允许我们在程序中手动设置异常,使用 raise 语句即可. 读者可能会感到疑惑,即我们从来都是想方设法地让程序正常运行,为什么还要 ...

  2. Python 异常处理--raise函数用法

    Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...

  3. python用raise手动抛出异常

    python用raise手动抛出异常 文章目录: raise: 就是手动抛出异常 格式: 格式:raise [exceptionType[,argument][,traceback]] 举例子1: d ...

  4. python里raise是什么意思_Python中raise与raise...from之间有何区别?

    本篇文章给大家带来的内容是关于Python中raise 与 raise ... from之间有何区别?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 起步 Python 的 raise ...

  5. Python 中 raise 和 raise/from 的区别

    Python 中 raise 和 raise/from 的使用方法 文章目录 Python 中 raise 和 raise/from 的使用方法 0. 参考资料 1. 代码比较 2. 用法解释 2.1 ...

  6. python中raise和raise e区别_python raise和assert的区别

    python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...

  7. python里raise_python – “raise”和“raise e”之间的区别?

    在 python中,除了块之间的提升和提升之间有区别吗? dis显示我不同的结果,但我不知道这是什么意思. 两者的最终行为是什么? import dis def a(): try: raise Exc ...

  8. python 抛出异常raise

    原因:  测试数据的时候命名找不到该文件,但是通过try except的执行状态却为"成功" 查找为什么出错了仍可以继续运行try 分支: p = os.system('pytho ...

  9. python中raise stoplteration_推导表达式迭代器生成器模块和包 | 编程电脑技术交流...

    魔法方法需要特定的条件去触发 有next是迭代器 # li = [] # for i in range(1,10): # li.append(i) # print(li) # ------------ ...

最新文章

  1. 美国AI博士指出:60天掌握Python全栈需要...
  2. DotNet 开发团队图
  3. 科大星云诗社动态20201216
  4. C# 8.0 抢先看-- Async Stream
  5. 使用简单的Java代码在SAP C4C里创建销售订单
  6. 通过示例了解Apache Ignite Baseline拓扑
  7. HTML+CSS---定位(相对定位--绝对定位--固定定位--设置元素的层叠顺序)---表单---设置光标样式---透明度(opacity属性定义元素的不透明度--IE的半透明滤镜)---外边线
  8. notepad拼心形_配置基于NotePad++工具下的C#开发环境
  9. ❤️再也不用为了重写方法而苦恼了,Lombok帮你解决!
  10. 分享:国外著名代码管理网站GitHub访问方式
  11. php原始 实现双向队列,用PHP实现一个双向队列
  12. python urllib3 使用_使用Python URLLIB3下载文件
  13. 按月分隔时间段,java实现,DateRange
  14. CodeForces - 884B Japanese Crosswords Strike Back
  15. linux lilo密码,LILO Security
  16. “5g+工业互联网”,工业生产制造迎来新突破
  17. 遇到Process finished with exit code -1073740791 (0xC0000409)实在不能解决的时候要注意
  18. linux系统各服务相关设置
  19. Linux不完全手册(一)(转)
  20. CRM八面体:了解客户关系管理的结构

热门文章

  1. VB+access成绩分析统计系统(论文+源代码)
  2. 升职加薪总轮不到你?这6个向上管理技巧教你弯道超车!
  3. windows10使用本地安全策略只允许某些ip访问远程计算机
  4. 敬回忆一杯酒,来祭奠我那逝去的青春。
  5. 铜陵学校2019级计算机类分班表,2019年铜陵市区初中学区划分表出炉!
  6. vue 日期面板_Vue实战:日期选择器
  7. FlyAI小课堂:Tensorflow基操
  8. 通过优雅的方式强制旋转屏幕
  9. iptables防止nmap端口扫描
  10. Java生成plist下载ipa文件