- ·上一篇文章:Python File(文件) 方法
- ·下一篇文章:Python OS 文件/目录方法
Python 异常处理
fh = open("testfile", "w") try:
fh.write("这是一个测试文件,用于测试异常!!") finally:
print "关闭文件" fh.close()except IOError:
print "Error:
没有找到文件或读取文件失败"当在try块中抛出一个异常,立即执行finally块代码。 finally块中的所有语句执行后,异常被再次触发,并执行except块代码。 参数的内容不同于异常。异常的参数一个异常可以带上参数,可作为输出的异常信息参数。 你可以通过except语句来捕获异常的参数,如下所示:try:
正常的操作 ......................except ExceptionType, Argument:
你可以在这输出 Argument 的值...变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。元组通常包含错误字符串,错误数字,错误位置。实例以下为单个异常的实例:
#!/usr/bin/python
# -*- coding:
UTF-8 -*-
# 定义函数def temp_convert(var):
try:
return int(var) except ValueError, Argument:
print "参数没有包含数字\n", Argument
# 调用函数temp_convert("xyz");以上程序执行结果如下:$ python test.py 参数没有包含数字invalid literal for int() with base 10:
'xyz'触发异常我们可以使用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,errelse:
print 2执行以上代码,输出结果为:$ python test.py 1 Invalid level!用户自定义异常通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg在你定义以上类后,你可以触发该异常,如下所示:try:
raise Networkerror("Bad hostname")except Networkerror,e:
print e.args
fh.write("这是一个测试文件,用于测试异常!!") finally:
print "关闭文件" fh.close()except IOError:
print "Error:
没有找到文件或读取文件失败"当在try块中抛出一个异常,立即执行finally块代码。 finally块中的所有语句执行后,异常被再次触发,并执行except块代码。 参数的内容不同于异常。异常的参数一个异常可以带上参数,可作为输出的异常信息参数。 你可以通过except语句来捕获异常的参数,如下所示:try:
正常的操作 ......................except ExceptionType, Argument:
你可以在这输出 Argument 的值...变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。元组通常包含错误字符串,错误数字,错误位置。实例以下为单个异常的实例:
#!/usr/bin/python
# -*- coding:
UTF-8 -*-
# 定义函数def temp_convert(var):
try:
return int(var) except ValueError, Argument:
print "参数没有包含数字\n", Argument
# 调用函数temp_convert("xyz");以上程序执行结果如下:$ python test.py 参数没有包含数字invalid literal for int() with base 10:
'xyz'触发异常我们可以使用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,errelse:
print 2执行以上代码,输出结果为:$ python test.py 1 Invalid level!用户自定义异常通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg在你定义以上类后,你可以触发该异常,如下所示:try:
raise Networkerror("Bad hostname")except Networkerror,e:
print e.args
Python 异常处理