def exception(): # 异常文件以及try exception的用法 # 控制值输入类型的方法 while True: try : value = int(raw_input( " please input a int type's vlaue: " ) # 如果你输入的是其它类型的变量,系统会让你重新输入 print value except ValueError: # 指定错误类型,也可以except一个正常的运算进行调试 print " Oops! That was no valid number. Try again... " # 如果try中子句在运行中发生异常,则该句后所有的语句都不被执行,转入执行exception中的内容 # 一个try可以包含多个Exception的内容,来定义不同类型的错误,以此建立公用的错误类 except IOError, (errno, strerror): print " I/O error(%s): %s " % (errno, strerror) except ValueError: print " Could not convert data to an integer. " except : print " Unexpected error: " , sys.exc_info()[0] raise # 一个exception可以包含多个错误类型 except (RuntimeError, TypeError, NameError): pass # 一个文件操作类型异常错误机制 for arg in sys.argv[ 1 :]: try : f = open(arg, ’r’) except IOError: print ’cannot open’, arg else : print arg, ’has’, len(f.readlines()), ’lines’ f.close() # 使用else语句要比在try中增加附加代码要好,意外的截取那些不需要保护的代码,来进行调试 # 通过try返回异常程序的类型,再通过else方法输出发生异常时的状态类型,来确定发生异常的可能原因 # 这样既能保证程序的稳态,也对程序版本的信息安全进行了控制 # 不指定抛出类型,返回异常状态信息 except inst: print type(inst).args else : file = f.readlines() print file # 使用raise强制抛出异常信息,raise(第一个参数指定了所抛出异常的名称,第二个指定了异常的参数)