python3 raise 抛出异常
当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
演示raise用法
try:s = Noneif 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)
python3 raise 抛出异常相关推荐
- 中raise抛出异常_Ruby 异常
Ruby 异常 异常和执行总是被联系在一起.如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的. 如果异常发生,则程序停止.异常用于处理各种类型的错误,这些错误可能在 ...
- 中raise抛出异常_Python 异常处理知识点汇总,五分钟就能学会 !
异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题.在Python中,和不分高级语言一样,使用了try/except/fin ...
- [转载] python自定义异常类型和raise抛出异常
参考链接: Python自定义异常 实际开发中,有时候系统提供的异常类型不能满足开发的需求.这时候你可以通过创建一个新的异常类来拥有自己的异常.异常类继承自 Exception 类,可以直接继承,或者 ...
- python except raise,python raise抛出异常的3种形式
使用raise语句能显式地触发异常,基本格式如下: raise 异常类 #引发异常时会隐式地创建类对象 raise 异常类对象 #引发异常类实例对象对应的异常 raise #重新引发刚刚发生的异常 在 ...
- python 自定义异常和主动抛出异常(raise)的操作
前言 有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出.注意,自定义异常只能由自己抛出.python解释器是不知道用户自定义异常是什么鬼的. raise语 ...
- python 抛出异常与自定义异常raise
使用raise抛出异常 当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. try:s = Noneif s i ...
- python中字符编码的总结和对比_python2和python3差异总结
项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧 核心类差异 Python3 对 Unicode 字符的原生支持 Python2 中使用 AS ...
- python和python3联通_python2号和python3号的区别总结,差异
项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧 核心类差异 Python3 对 Unicode 字符的原生支持 Python2 中使用 AS ...
- python2和python3差异总结
项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧 核心类差异 Python3 对 Unicode 字符的原生支持 Python2 中使用 AS ...
最新文章
- 服务器处理 json 数据
- 2020年人工智能领域的最大创新
- JAVA web项目转客户端(nativefier)
- 继续转 [转]php版本的cron定时任务执行器
- Jenkins全新的UI体验-Blue Ocean
- 锁存器的工作原理_数字电路学习笔记(十):更多锁存器和触发器
- Vh和Vw的简介和使用
- 随笔分类 - HALCON学习例程中文详解
- python hstack_Python小白数据科学教程:NumPy (下)
- 116. 填充每个节点的下一个右侧节点指针
- html怎么把excel表格合并单元格,Excel中如何快速合并多个单元格
- Joey Sturgis Tones Soar for Mac(音效延迟插件)
- MYSQL导入导出.sql文件
- STM32的Altium Designer原理图PCB封装库下载
- 网络图片地址直接转Base64
- iOS13 iPadOS 获取UserAgent的问题
- String转int数组
- receptive field,即感受野
- 软件产品与项目开发的区别
- Hydra – Brute Force HTTP(S)