当前位置:K88软件开发文章中心编程语言PythonPython01 → 文章内容

Python 异常处理

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-10 10:58:36

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

上一页  [1] [2] 


Python 异常处理