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

  1. 中raise抛出异常_Ruby 异常

    Ruby 异常 异常和执行总是被联系在一起.如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的. 如果异常发生,则程序停止.异常用于处理各种类型的错误,这些错误可能在 ...

  2. 中raise抛出异常_Python 异常处理知识点汇总,五分钟就能学会 !

    异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题.在Python中,和不分高级语言一样,使用了try/except/fin ...

  3. [转载] python自定义异常类型和raise抛出异常

    参考链接: Python自定义异常 实际开发中,有时候系统提供的异常类型不能满足开发的需求.这时候你可以通过创建一个新的异常类来拥有自己的异常.异常类继承自 Exception 类,可以直接继承,或者 ...

  4. python except raise,python raise抛出异常的3种形式

    使用raise语句能显式地触发异常,基本格式如下: raise 异常类 #引发异常时会隐式地创建类对象 raise 异常类对象 #引发异常类实例对象对应的异常 raise #重新引发刚刚发生的异常 在 ...

  5. python 自定义异常和主动抛出异常(raise)的操作

    前言 有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出.注意,自定义异常只能由自己抛出.python解释器是不知道用户自定义异常是什么鬼的. raise语 ...

  6. python 抛出异常与自定义异常raise

    使用raise抛出异常 当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. try:s = Noneif s i ...

  7. python中字符编码的总结和对比_python2和python3差异总结

    项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧 核心类差异 Python3 对 Unicode 字符的原生支持 Python2 中使用 AS ...

  8. python和python3联通_python2号和python3号的区别总结,差异

    项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧 核心类差异 Python3 对 Unicode 字符的原生支持 Python2 中使用 AS ...

  9. python2和python3差异总结

    项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧 核心类差异 Python3 对 Unicode 字符的原生支持 Python2 中使用 AS ...

最新文章

  1. 服务器处理 json 数据
  2. 2020年人工智能领域的最大创新
  3. JAVA web项目转客户端(nativefier)
  4. 继续转 [转]php版本的cron定时任务执行器
  5. Jenkins全新的UI体验-Blue Ocean
  6. 锁存器的工作原理_数字电路学习笔记(十):更多锁存器和触发器
  7. Vh和Vw的简介和使用
  8. 随笔分类 - HALCON学习例程中文详解
  9. python hstack_Python小白数据科学教程:NumPy (下)
  10. 116. 填充每个节点的下一个右侧节点指针
  11. html怎么把excel表格合并单元格,Excel中如何快速合并多个单元格
  12. Joey Sturgis Tones Soar for Mac(音效延迟插件)
  13. MYSQL导入导出.sql文件
  14. STM32的Altium Designer原理图PCB封装库下载
  15. 网络图片地址直接转Base64
  16. iOS13 iPadOS 获取UserAgent的问题
  17. String转int数组
  18. receptive field,即感受野
  19. 软件产品与项目开发的区别
  20. Hydra – Brute Force HTTP(S)

热门文章

  1. jlink、DAPLink、J-Link  OB资料整理
  2. U盘、硬盘格式化数据恢复
  3. NR 5G UE初始接入流程
  4. 软件测试面试-如何测试一个杯子(转)
  5. Netty+SpringBoot+FastDFS+Html5实现聊天App
  6. c#如何读取相机手机的拍摄时间
  7. Qunee for HTML5 在电力方面的应用
  8. mysql集群的配置
  9. 【Excel】Excel根据单元格背景色求和
  10. 在 Windows 下安装 Oracle 11g XE (Express Edition)