2188 次
		
2 回答
            2        
        
		
You can use except without specifying any type to catch all exceptions.
From the python docs http://docs.python.org/tutorial/errors.html:
import sys
try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except IOError as (errno, strerror):
    print "I/O error({0}): {1}".format(errno, strerror)
except ValueError:
    print "Could not convert data to an integer."
except:
    print "Unexpected error:", sys.exc_info()[0]
    raise
The last except will catch any exception that has not been caught before (i.e. a Exception which is not of IOError or ValueError.)
于 2011-03-05T23:32:00.837   回答
    
    
            2        
        
		
您可以使用顶级异常类型 Exception,它将捕获之前未捕获的任何异常。
http://docs.python.org/library/exceptions.html#exception-hierarchy
try:
    soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(url))
    title = str(soup.html.head.title.string)
    if title == "404 Not Found":
        self.redirect("/urlparseerror")
    elif title == "403 - Forbidden":
        self.redirect("/urlparseerror")     
    else:
        title = str(soup.html.head.title.string).lstrip("\r\n").rstrip("\r\n")
except UnicodeDecodeError:    
    self.redirect("/urlparseerror?error=UnicodeDecodeError")
except AttributeError:        
    self.redirect("/urlparseerror?error=AttributeError")
#https url:    
except IOError:        
    self.redirect("/urlparseerror?error=IOError")
except Exception, ex:
    print "Exception caught: %s" % ex.__class__.__name__
    于 2011-03-05T23:56:49.420   回答