pythonraise
‘壹’ python raise EOFError 错误
应该是对同一个文件,同时执行了多次打开操作造成的!
‘贰’ python raise干什么的
有异常了 可以用rasie决定异常了该做什么
不过 即使没有异常 也可以raise来定义满足特定条件后抛弃什么异常
try:
count[t]+=1
except KeyError:
count[t]=1
if count[t]>1:
raise forms.ValidationError("tag '%s' 重复出现了%s次"%(str(t),str(count[t])))
‘叁’ 请教关于python的raise使用的问题
python中的异常
异常是指程序中的例外,违例情况。异常机制是指程序出现错误后,程序的处理方法。当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。
Exception类是常用的异常类,该类包括StandardError,StopIteration, GeneratorExit, Warning等异常类。
StandardError类是python中的错误异常,如果程序上出现逻辑错误, 将引发该异常。StandardError类是所有内敛异常的基类,放置在默认的命名空间中,因此使用IOEroor,
EOFError, ImportError等类,不需要导入exception模块。
StopIteration类判断循环是否执行到尾部,如果循环到尾部,则抛出该异常。
GeneratorExit类是由Generator函数引发的异常,当调用close()时引发该异常。
Warning类表示程序中的代码引起的警告。
python中的异常使用继承结构创建,可以在异常处理程序中捕获基类异常,也可以捕获各种子类异常,python中使用try...except语句捕获异常,异常子句定义在try子句后面。
try...except的使用方法
try...except用于处理问题语句,捕获可能出现的异常。try子句中的代码块放置可能出现异常的语句,except子句中的代码块处理异常。
演示try...except语句捕获IOError异常
try:
file("hello.txt", "r") #如果文件不存在,引发异常
print "读文件"
except IOError: #捕获IO异常
print "文件不存在"
except: #其它异常
print "程序异常"
python与Java的异常处理模式相似,异常处理语句也可以嵌套,演示如下:
try:
s = "hello"
try:
print s[0] + s[1]
print s[0] - s[1]
except TypeError:
print "字符串不支持减法运算"
except:
print "异常"
如果外层try子句中的代码引发异常,程序将直接跳转到外层try对应的except子句,而内部的try子句将不会被执行。
try...finally的使用方法
try...except后还可以添加一个finally子句。无论异常是否发生,finally子句都会被执行。所有的finally子句通常用于关闭因异常而不能释放的系统资源。
try:
f = open("hello.txt", "r")
try:
print f.read(5)
except:
print "读文件异常"
finally:
print "释放资源"
f.close()
except IOError:
print "文件不存在"
使用raise抛出异常
当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
演示raise用法
try:
s = None
if s is None:
print "s 是空对象"
raise NameError #如果引发NameError异常,后面的代码将不能执行
print len(s)
except TypeError:
print "空对象没有长度"
自定义异常
python允许程序员自定义异常,用于描述python中没有涉及的异常情况,自定义异常必须继承Exception类,自定义异常按照命名规范以"Error"结尾,显示地告诉程序员这是异常。自定义异常使用raise语句引发,而且只能通过人工方式触发。
from __future__ import division
class DivisionException(Exception):
def __init__(self, x, y):
Exception.__init__ (self, x, y) #调用基类的__init__进行初始化
self.x = x
self.y = y
if __name__ == "__main__":
try:
x = 3
y = 2
if x % y > 0: #如果大于0, 则不能被初始化,抛出异常
print x/y
raise DivisionException(x, y)
except DivisionException,div: #div 表示DivisionException的实例对象
print "DivisionExcetion: x/y = %.2f" % (div.x/div.y)
assert语句的使用
assert语句用于检测某个条件表达式是否为真。assert语句又称为断言语句,即assert认为检测的表达式永远为真,if语句中的条件判断都可以使用assert语句检测。
‘肆’ python编程try。。raise的问题
因为raise就是抛出错误的意思
‘伍’ python raise 后程序闪退
退出重进一下。
请检查iOS设备是否有足够容量空间,删除不需要文件或应用程序重新安装,检查应用程序是否支持iOS设备固件版本,应用程序包数据丢失或不完整导致安装失败,重新下载一次再安装。
修复闪退功能只支持iOS5和iOS6系统,修复时请保持手机一直处于WIFI接连状态,在良好WIFI网络环境下重新修复一次。
‘陆’ python有哪些控制语句
控制语句:
if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运行语句块。
try语句,与except,finally配合使用处理在程序运行中出现的异常情况。
class语句,用于定义类型。
def语句,用于定义函数和类型的方法。
pass语句,表示此行为空,不运行任何操作。
assert语句,用于程序调试阶段时测试运行条件是否满足。
with语句,Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
yield语句,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
raise语句,制造一个错误。
import语句,导入一个模块或包。
from … import语句,从包导入模块或从模块导入某个对象。
import … as语句,将导入的对象赋值给一个变量。
in语句,判断一个对象是否在一个字符串/列表/元组里。
‘柒’ python raise触发异常为什么没有打印错误
题主你好,
先说结果吧: 题主的代码没有问题, StopIteration异常也被抛出了.
下面说一下for循环从迭代器取值的逻辑题主应该就明白了:
正常情况下, for从迭代器中取值时, 在将迭代器中的元素消耗尽了以后, 迭代器都会抛出一个StopIteration异常给for语句, for语句检测到StopIteration异常后就知道迭代器不会再返回内容了, 也就将for循环给结束掉了, 也就是说StopIteration是被for循环内部消耗掉了, 你可以这样理解:
上面代码的执行过程是这样的:
将[1,2,3]中的1赋给x,输出1;
将[1,2,3]中的2赋给x,输出2;
将[1,2,3]国的3赋给x,输出3;
抛出StopIteration异常, for检测到StopIteration异常,结束for循环;
-------------
明白了上面的逻辑后, 题主也可以验证一下, 题主可以将if语句给注释掉, 然后执行一下, 看看输出结果.
希望可以帮到题主, 欢迎追问.
有错误也请指出, 谢谢!
‘捌’ python3的raise有traceback这个参数吗如果有的话怎么用
这个实际上是没有这个参数的,只不过有很多人在虚构出来的。
‘玖’ python3 函数 用 try except finally 和 raise
网络上一些文章(如《PYTHON编程金典读书笔记》、《PYTHON中的finally》)都讲述try finally与try except不能同时使用,若同时使用,就会出现语法错误。根据我的调查,这些说法早已不合时宜,如本人撰写此文对这个说明修正一下:《PYTHON核心编程》第二版提到,自PYTHON 2.5开始,你可以用 finally 子句与 try-except 或 try-except-else 一起使用.下面是 try-except-else-finally 语法的示例: try: A except MyException: B else: C finally: D 等价于 Python 0.9.6 至 2.4.x 中如下的写法: try: try: A Edit By Vheavens Edit By Vheavens except MyException: B else: C finally: D 欢迎访问我的小站:程序员的财富理想