except as e中的‘e’的作用总结
来源:互联网 发布:js 删除预览图片 编辑:程序博客网 时间:2024/05/17 23:40
1.第一个解释
这个e是异常类的一个实例,如果我们完整地解释这个问题,我觉得还是从Python的自定义异常类说起比较好。假如,我们现在自定义一个简单的异常类:class MyError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value)我们抛这个异常的时候可以这么写:try: raise MyError(2*2)except MyError as e: print 'My exception occurred, value:', e.value我们在捕获这个异常之后假如需要访问TA的一些属性怎么办,这个时候就可以使用as关键字所以,这里的e是前面MyError类的一个instance,我们可以直接访问他的value,也就是你看到的e.value
2.第二个解释
except: #捕获所有异常
except: <异常名>: #捕获指定异常
except:<异常名1,异常名2):捕获异常1或者异常2
except:<异常名>,<数据>:捕获指定异常及其附加的数据
except:<异常名1,异常名2>:<数据>:捕获异常名1或者异常名2,及附加的数据库
常用异常名:
异常名
AttributeError 调用不存在的方法引发的异常
EOFError
ImportError 导入模块出错引发的异常
IndexError
IOError
KeyError
NameError 使用不存在的变量名引发的异常
TabError 语句块缩进不正确引发的异常
ValueError 搜索列表中不存在的值引发的异常
ZeroDivisionError
使用raise 引发异常几种方式:
raise 异常名
raise 异常名,附加数据
raise 类名
assert 简化了raise语句:
需要注意的是,assert语句一般用于开发时对程序条件的验证,只有当内置_debug_为True时,assert语句才有效。当Python脚本以-O选项编译成为字节码文件时,assert语句将被移除。
但与raise语句不同的是,assert语句是在条件测试为假时,才引发异常。assert语言的一般形式如下:
assert<条件测试>,<异常附加数据>#其中异常附加数据是可选的
python编程_Python异常机制try: 代码段except 异常类型,e: 异常处理代码段,如果不知道异常类型,可以使用try: 代码段 exceptExcept,e:异常处理代码段;Except是通用异常类型
一个Python异常实例
一个简单的异常例子,打开一个不存在的文件,引发异常:
#!/usr/local/bin/python3.2
try:
f = open("file-not-exists", "r")
except IOError,e:
print("open exception: %s: %s\n" %(e.errno, e.strerror))
与Python异常相关的关键字:
关键字 关键字说明
raise 抛出/引发异常
try/except 捕获异常并处理
pass 忽略异常
as 定义异常实例(except IOError as e)
finally 无论是否出现异常,都执行的代码
else 如果try中的语句没有引发异常,则执行else中的语句
except
老版本的Python,except语句写作"except Exception, e",Python 2.6后应写作"except Exception as e"。
使用except而不带任何异常类型:
try:
except:
会捕获所有异常,包括键盘中断和程序退出请求(用sys.exit()就无法退出程序了,因为异常被捕获了),因此慎用。
使用except Exception as e可以捕获除与程序退出sys.exit()相关之外的所有异常。
else与finally
else表示如果try中的代码没有引发异常,则会执行else:
try:
f = open("foo", "r")
except IOError as e:
...
else:
data = f.read()
finally表示无论是否有异常,都将被执行:
try:
f = open("foo", "r")
except IOError as e:
...
finally:
f.close()
#!/usr/bin/python
import traceback
try:
#except Exception,e:
#
except Exception as e:
#!/usr/bin/python
import traceback
try:
#except Exception,e:
#
except Exception , e:
方式一:try语句:
1使用try和except语句来捕获异常
try:
except [exception,[data…]]:
try:
block
except [exception,[data...]]:
else:
该种异常处理语法的规则是:
·
·
·
·
·
例:
try:
except IOError, e:
捕获到的IOError错误的详细原因会被放置在对象e中,然后运行该异常的except代码块
捕获所有的异常
try:
except Exception,ex:
使用except子句需要注意的事情,就是多个except子句截获异常时,如果各个异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。放在后面的子类异常也就不会执行到了。
2 使用try跟finally:
语法如下:
try:
finally:
该语句的执行规则是:
·
·
·
第二种try语法在无论有没有发生异常都要执行代码的情况下是很有用的。例如我们在python中打开一个文件进行读写操作,我在操作过程中不管是否出现异常,最终都是要把该文件关闭的。
这两种形式相互冲突,使用了一种就不允许使用另一种,而功能又各异
2. 用raise语句手工引发一个异常:
raise [exception[,data]]
在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。异常名称标识出具体的类:Python异常是那些类的对象。执行raise语句时,Python会创建指定的异常类的一个对象。raise语句还可指定对异常对象进行初始化的参数。为此,请在异常类的名称后添加一个逗号以及指定的参数(或者由参数构成的一个元组)。
例:
try:
except MyError:
raise ValueError,’invalid argument’
捕捉到的内容为:
type = VauleError
message = invalid argument
3.
try:
block
except:
示例:…excpetion/traceback.py
4. 采用sys模块回溯最后的异常
import sys
try:
except:
或者以如下的形式:
import sys
sys.exc_info()的返回值是一个tuple, (type, value/message, traceback)
这里的type ---- 异常的类型
value/message ---- 异常的信息或者参数
traceback ---- 包含调用栈信息的对象。
从这点上可以看出此方法涵盖了traceback.
5. 异常处理的一些其它用途
例支持特定平台功能
# Bind the name getpass to the appropriate function
try:
except ImportError:
else:
如果前两个不能工作,我们试着从 EasyDialogs 导入一个函数,它是 Mac OS独有的一个模块,提供了各种各样类型的弹出对话框。再一次,如果导入失败,Python 会引发一个我们捕捉的 ImportError异常。
- except as e中的‘e’的作用总结
- try except Exception as e 检查异常
- The difference between 'except Exception, e: ' and 'except Exception as e:'
- except KeyboardInterrupt, e
- e.target与e.currentTarget的作用
- yum except KeyboardInterrupt, e: 错误
- The expression except (OSError, e)
- yum错误:except KeyboardInterrupt, e:
- python Exception as e和 Exception,e
- “except (IOError, OSError), e: SyntaxError: invalid syntax”
- C\D\E\F盘的作用
- “set -e” 的作用
- 关于function(e)中的e
- set -e作用
- ie的try.catch(e)中的e属性
- jQuery中的 return false, e.preventDefault(), e.stopPropagation()的区别
- jQuery中的e.preventDefault(), e.stopPropagation()的使用
- Log.v Log.d Log.i Log.w Log.e作用的总结
- 寻找素数
- 回文数字
- [BZOJ3519][Zjoi2014][模拟]消棋子
- 使用Spring的JAVA Mail支持简化邮件发送
- 集合框架图以及一些理解与总结
- except as e中的‘e’的作用总结
- SQL Server-索引故事的遥远由来,原来是这样的?(二十八)
- Python 在Mysql中插入数据
- 浅谈Spring的PropertyPlaceholderConfigurer
- Leetcode 86. Partition List
- pip install PIL 报错
- 最全的 jdk 官方下载页面
- 1.11.1二分查找最接近的数
- xml的约束和dtd