Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29307410
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Python/Ruby

2009-02-10 10:54:24

http://blog.chinaunix.net/u1/43502/showart_1134830.html  [转载一篇好文章哈哈!]

分析一下python中的处理异常机制:
1.Python 使用 try...except 来处理异常,使用 raise 来引发异常。JavaC++ 使用 try...catch 来处理异常,使用 throw 来引发异常。
>>> try:
... fsock = open("/notthere") 2
... except IOError: 3
... print "The file does not exist, exiting gracefully"
... print "This line will always print" 4

BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StandardError
| +-- BufferError
| +-- ArithmeticError
| | +-- FloatingPointError
| | +-- OverflowError
| | +-- ZeroDivisionError
| +-- AssertionError
| +-- AttributeError
| +-- EnvironmentError
| | +-- IOError
| | +-- OSError
| | +-- WindowsError (Windows)
| | +-- VMSError (VMS)
| +-- EOFError
| +-- ImportError
| +-- LookupError
| | +-- IndexError
| | +-- KeyError
| +-- MemoryError
| +-- NameError
| | +-- UnboundLocalError
| +-- ReferenceError
| +-- RuntimeError
| | +-- NotImplementedError
| +-- SyntaxError
| | +-- IndentationError
| | +-- TabError
| +-- SystemError
| +-- TypeError
| +-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
如何来打印出来异常的具体信息呢?

try:
出现异常的模块
except 异常类型,error:
print error #表示的就是具体的异常信息了。通过error 进行显示出来的

具体的异常对象就是为error了哦!


至少3个方法:

----------------------------------

方法一:捕获所有异常

try
    a=b
    b=c
except Exception,ex:
    print Exception,':',ex
--------------------------------------------------------------------------------

方法二:采用traceback模块查看异常

import traceback
try:
    a=b
    b=c
except:
    traceback.print_exc()
--------------------------------------------------------------------------------

方法三:采用sys模块回溯最后的异常

import sys
try:
    a=b
    b=c
except:
    info=sys.exc_info()
    print info[0],':',info[1]
--------------------------------------------------------------------------------

把 traceback.print_exc() 打印在屏幕上的信息保存到一个文本文件中

try:
    a=b
    b=c
except:
    f=open('c:\log.txt','a')
traceback.print_exc(file=f)
    f.flush()
    f.close()

正确的异常组合格式如下:

1 正确的组合方式如下:

Try/except

Try/except/else

Try/finally

没有这种写法的哦:Try/except/finally


还可以像Java中的那样打印出来异常的具体的类型是什么的哦!~

num1 = raw_input('Enter a number:')

num2 = raw_input('Enter two number:')

try:

    num1 = (float)(num1)

    num2 = (float)(num2)

    result = num1/num2

except ValueError,err:   #这个就是异常的具体内容哦!

    print err

    #print 'number'

except ZeroDivisionError,e:

print '%s'%e

 

直接打印出来 这个异常的类型是什么的。

相当于JAVA中的try{}catch(Exception e)







阅读(1120) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-07-21 13:15:24

做站长并不是只为了PV与money更多的应该是一种爱好。喜欢这个东西!真正用时间与精力来运营起来!

chinaunix网友2010-07-21 12:30:43

除了工作与项目之外其他时间只做一件事情!