当前位置:文档之家› Python中的异常

Python中的异常

Python中的异常
Python中的异常

python的try语句有两种风格

一:种是处理异常(try/except/else)

二:种是无论是否发生异常都将执行最后的代码(try/finally)

try/except/else风格

try:

<语句>#运行别的代码

except<名字>:

<语句>#如果在try部份引发了'name'异常

except<名字>,<数据>:

<语句>#如果引发了'name'异常,获得附加的数据

else:

<语句>#如果没有异常发生

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except 子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

try/finally风格

try:

<语句>

finally:

<语句>#退出try时总会执行

python总会执行finally子句,无论try子句执行时是否发一异常。

1、如果没有发生异常,python运行try子句,然后是finally子句,然后继续。

2、如果在try子句发生了异常,python就会回来执行finally子句,然后把异常递交给上层try,控制流不会通过整个try语句。

当你想无论是否发生异常都确保执行某些代码时,try/finally是有用的。

这个在打开文件的时候有用finally总是在最后close()文件

try语句子句形式表

except:捕获所有异常

except name:只捕获特定的异常

except name,value:捕获异常和它的附加数据(将异常的信息保存到value,)except(name1,name2):捕获任何列出的异常

else:如果没有异常

finally:总是执行

>>>

try:

f=open('file.txt')

except IOError,e:

print e

else:

print'wrong'

[Errno2]No such file or directory:'file.txt'

最新的python版本支持try/except/finally

try:1:如果x没有异常,执行z,i

x2:如果x有异常,一:如果except捕捉到异常则执行y,i

except(name):二:没捕捉到,执行i,然后返回内置异常处理

y

else:

z

finally:

i

Python文件和异常处理

6. 异常和文件处理- Dive Into Python 6.1 异常处理. Python的异常用 try except finally 来处理. 并且except后还可以跟else . 引发异常用raise 如果抛出的异常没有被处理. 在Python IDE中是显示一些红色的信息. 在真正的Python程序运行时. 会导致程序终止. 在以前我们已经见到过一下几种异常: 在Dictionary 中如果使用的key 不存在. 会引发KeyError异常.如: >>> d = {"a":1, "b":"abc"} >>> d["c"] Traceback (most recent call last): File "", line 1, in KeyError: 'c' 搜索列表中不存在的值. 将引发ValueError异常.如: >>> li = [1,2] >>> li.index(3) Traceback (most recent call last): File "", line 1, in ValueError: list.index(x): x not in list 对应的. 若用下标来引用列表中的元素. 若下标出界. 会产生IndexError异常.如: >>> li[2] Traceback (most recent call last): File "", line 1, in IndexError: list index out of range 调用不存在的方法. 会引发AttributeError异常. 引用不存在的变量. 引发NameError异常. 未强制转化就混用数据类型. 引发TypeError异常. 文件操作错误引发的IOError.如: try: fsock = open("/notthere") except IOError: print "The file dose not exits..." else: print "open the file." print "this line will always print" 注意上边的代码中: open是一个内置函数. 用来打开文件. 并返回一个文件对象. try except 后边可以跟else 语句. 当没有捕捉到指定的异常时. 执行else 语句. 导入一个模块时. 若模块不存在. 会引发ImportError异常. 还可以定义自己的异常类. 定义时让它继承内置的Exception类. 然后在需要抛出异常时用raise抛出.

Python中的异常

python的try语句有两种风格 一:种是处理异常(try/except/else) 二:种是无论是否发生异常都将执行最后的代码(try/finally) try/except/else风格 try: <语句>#运行别的代码 except<名字>: <语句>#如果在try部份引发了'name'异常 except<名字>,<数据>: <语句>#如果引发了'name'异常,获得附加的数据 else: <语句>#如果没有异常发生 try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except 子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。 2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。 3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。 try/finally风格 try: <语句> finally: <语句>#退出try时总会执行 python总会执行finally子句,无论try子句执行时是否发一异常。 1、如果没有发生异常,python运行try子句,然后是finally子句,然后继续。 2、如果在try子句发生了异常,python就会回来执行finally子句,然后把异常递交给上层try,控制流不会通过整个try语句。 当你想无论是否发生异常都确保执行某些代码时,try/finally是有用的。 这个在打开文件的时候有用finally总是在最后close()文件

Python 错误和异常小结

原文链接https://www.doczj.com/doc/0e11770297.html,/sinchb/article/details/8392827 事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Python 异常后的一篇笔记式的记录和小结性质的文章。什么?你还不知道什么是异常,额... 1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了)。 python标准异常 异常名称描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 SystemExit Python 解释器请求退出 StandardError 所有的内建标准异常的基类 ArithmeticError 所有数值计算错误的基类 FloatingPointError 浮点计算错误 OverflowError 数值运算超出最大限制 ZeroDivisionError 除(或取模)零(所有数据类型)

AssertionError 断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败 OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 KeyboardInterrupt 用户中断执行(通常是输入^C) LookupError 无效数据查询的基类 IndexError 序列中没有没有此索引(index) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象(没有属性) UnboundLocalError 访问未初始化的本地变量 ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError 一般的运行时错误 NotImplementedError 尚未实现的方法 SyntaxError Python 语法错误 IndentationError 缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误

Python 错误和异常小结

原文链接事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Python异常后的一篇笔记式的记录和小结性质的文章。什么你还不知道什么是异常,额... 异常类 Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了)。 python标准异常

2.捕获异常 Python完整的捕获异常的语句有点像: 1.try: 2.try_suite 3.except Exception1,Exception2,...,Argument: 4.exception_suite 5....... #other exception block 6.else: 7.no_exceptions_detected_suite 8.finally: 9.always_execute_suite 额...是不是很复杂当然,当我们要捕获异常的时候,并不是必须要按照上面那种格式完全写下来,我们可以丢掉else语句,或者finally语句;甚至不要exception语句,而保留finally语句。额,晕了好吧,下面,我们就来一一说明啦。 语句 try_suite不消我说大家也知道,是我们需要进行捕获异常的代码。而except语句是关键,我们try捕获了代码段try_suite里的异常后,将交给except来处理。 try...except语句最简单的形式如下: 1.try: 2.try_suite 3.except: 4.exception block

Python异常处理实例解读,Python中的断言

Python异常处理实例解读 #Python异常处理实例解读,Python中的断言 #断言是一个健全检查,可以在完成对程序的测试后打开或关闭。 #测试表达式,如果结果为false,则会引发异常。 #assert语句,assert Expression[, Arguments] #程序解读,测试输入值是否合适,表达式为false,Python会引发AssertionError异常。def test1(ti):#函数块以关键字def开头,后跟函数名和小括号(()) assert (ti > 0),"这个值不合适!"#如果表达式为false,Python会引发AssertionError异常。 return (ti+5)+32#语句return [expression]用于退出一个函数,可选地将一个表达式传回给调用者 print (test1(273))#ti=273测试输出 print (test1(-300))#ti=-300测试输出 运行结果! 310 Traceback (most recent call last): File "f:\张铁刚资源库\python\经验谈\103python异常处理实例解读\python异常处理实例解读.py", line 9, in print (test1(-300)) File "f:\张铁刚资源库\python\经验谈\103python异常处理实例解读\python异常处理实例解读.py", line 6, in test1 assert (ti > 0),"这个值不合适!" AssertionError: 这个值不合适! >>>

Python专题——异常和工具

1.异常基础 try/except:捕捉由python或程序员引起的异常并恢复。 try/finally:无论异常是否发生,执行清理语句 raise:手动在代码中触发异常 assert:有条件的在代码中触发异常 with/as:在python2.6和后续版本中实现环境管理器 1.1为什么使用异常? 异常处理对于错误处理、终止动作和事件通知有用。它可以简化特殊情况的处理,并且可以用来实现替代的控制流程。一般来讲,异常处理还可以减少程序所需的检测错误代码的数量,因为所有的错误都由处理器来过滤,你可能不需要测试每个操作的输出。 1.2异常的角色 错误处理 事件通知 特殊情况处理 终止行为 非常规控制流程 2.异常处理 2.1默认异常处理器 如果代码没有刻意的捕捉代码异常,它将会一直向上返回程序顶层,并启用默认的异常处理器:就是打印标准出错消息。这些消息引发的异常还有堆栈跟踪:也就是异常发生时激活的程序行和函数清单。 def fetcher(obj, index): return obj[index] x = 'spam' fetcher(x, 4) output: Traceback (most recent call last):

File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 6, in fetcher(x, 4) File "C:\E\workspace\PythonLearning\chapter17\exc.py", line 2, in fetcher return obj[index] IndexError: string index out of range 任何未捕获的异常都流入默认的异常处理器,python在程序的最顶端提供它。这个处理器打印类似的出错消息,并且退出程序。 2.2捕获异常:try/except/else语句 try: fetcher(x, 4) except IndexError: print'got exception' try首行底下的代码块代表此语句的主要动作:试着执行程序代码。Except子句定义了try代码块内引发的异常的处理器,而else子句则是提供没发生异常时要执行的处理器。 ●如果try代码块语句执行时的确发生了异常,python就跳回try,执行第一个符合引发 异常的except子句下面的语句。当except代码块执行后(除非except代码块又引发了另一异常),控制权就会到整个try语句后继续执行。 ●如果异常发生在try代码块内,没有符合的except子句,异常就会向上传递到程序中的 之前进入的try中,或者如果它是第一条这样的语句,就传递到这个进程的顶层(这回使Python终止这个程序并打印默认的出错消息)。 ●如果try首行底下执行的语句没有发生异常,python就会执行else下的语句(如果有的 话),控制权会在整个try语句下继续。

python异常处理

python异常处理 #!/usr/bin/python import traceback try: 1/0 #except Exception,e: # print traceback.format_exc() except Exception as e: print e #!/usr/bin/python import traceback try: 1/0 #except Exception,e: # print traceback.format_exc() except Exception , e: print e Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话遇到一个未被捕捉的SystemExit异常,会话就会终止。 方式一:try语句: 1使用try和except语句来捕获异常 try: block except [exception,[data…]]: block try: block except [exception,[data...]]: block else: block 该种异常处理语法的规则是:

· 执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。 · 如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。 · 如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。 · 如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。 · 如果没有发生异常,则执行else块代码。 例: try: f = open(“file.txt”,”r”) except IOError, e: print e 捕获到的IOError错误的详细原因会被放置在对象e中,然后运行该异常的except代码块 捕获所有的异常 try: a=b b=c except Exception,ex: print Exception,":",ex 使用except子句需要注意的事情,就是多个except子句截获异常时,如果各个异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。放在后面的子类异常也就不会执行到了。 2 使用try跟finally: 语法如下: try: block finally: block 该语句的执行规则是: · 执行try下的代码。 · 如果发生异常,在该异常传递到下一级try时,执行finally中的代码。 · 如果没有发生异常,则执行finally中的代码。 第二种try语法在无论有没有发生异常都要执行代码的情况下是很有用的。例如我们在python中打开一个文件进行读写操作,我在操作过程中不管是否出现异常,最终都是要把该文件关闭的。 这两种形式相互冲突,使用了一种就不允许使用另一种,而功能又各异

三种使用python进行数据异常值预处理方法对比

三种使用python进行数据异常值预处理方法对比 一、前言 本文利用python代码,涉及了数据预处理环节,目的是去除异常值,涉及的三种方法利用pandas、numpy等等实现,并进行可视化对比,对比各种方法的优劣势。 二、预处理的原始数据 代码如下: from datetime import datetime from pandas import read_table fname = './data/spikey_v.dat' cols = ['j', 'u', 'v', 'temp', 'sal', 'y', 'mn', 'd', 'h', 'mi'] df = read_table(fname , delim_whitespace=True, names=cols) df.index = [datetime(*x) for x in zip(df['y'], df['mn'], df['d'], df['h'], df['mi'])] df = df.drop(['y', 'mn', 'd', 'h', 'mi'], axis=1)

df.head() 结果是: 三、使用方法get_median_filtered() 代码如下: import numpy as np def get_median_filtered(signal, threshold=3): signal = signal.copy() difference = np.abs(signal - np.median(signal)) median_difference = np.median(difference) if median_difference == 0: s = 0 else: s = difference / float(median_difference) mask = s > threshold

python异常处理学习

python异常处理(基础) 2014-01-13 22:57 by 虫师, 16151 阅读, 4 评论, 收藏, 编辑 之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充。 https://www.doczj.com/doc/0e11770297.html,/fnng/archive/2013/04/28/3048356.html python shell >>> open('abc.txt','r') Traceback (most recent call last): File "", line 1, in IOError: [Errno 2] No such file or directory: 'abc.txt' 打开一个不存在的文件abc.txt 文件,当系统找不到abc.txt 文件时,就会抛出给我们一个IOError类型的错误,No such file or directory:abc.txt (没有abc.txt这样的文件或目录) Try...except... 假如,我们已经知道这种类型的错误,那么就可以通过一个异常扑捉来扑捉这个错误。我们可以通过try...except 来接收这个错误。打开文件写入: try: open("abc.txt",'r') except IOError: pass 再来运行程序就会看不到任何错误,因为我们用except 接收了这个IOError错误。pass 表示实现了相应的实现,但什么也不做。 假如我不是打开一个文件,而是输出一个没有定义的变量呢? try: print aa except IOError:

相关主题
文本预览
相关文档 最新文档