TypeError not caught by except statement

Carl Banks pavlovevidence at gmail.com
Mon Jan 25 11:03:49 CET 2010


On Jan 25, 12:35 am, siddu <siddhartha.veedal... at gmail.com> wrote:
> Hi,
>
> except not able to caught the TypeError exception occured in the below
> code
>
>         log.info("refer",ret) in the try block
>
> throws a TypeError which is not caught .
> Also sometimes process is getting hanged.
>
> ------------------------------------------------------------------------------------------------------------------------------------------------
> import logging
> log = logging.getLogger()
> fileName = strftime("%d-%b-%Y-", gmtime()) + str(int(time.time())) + "-
> Log.log"
> log = logging.getLogger()
> log.setLevel(logging.NOTSET)
> fh = logging.FileHandler(logFile)
> logFileLevel = logging.DEBUG
> fh.setLevel(logFileLevel)
> format_string = '%(process)d %(thread)d %(asctime)-15s %(levelname)-5s
> at %(filename)-15s in %(funcName)-10s at line %(lineno)-3d "%(message)
> s"'
> fh.setFormatter(logging.Formatter(format_string))
> log.addHandler(fh)
>
> try:
>     log.info("start")
>     log.info("refer",ret)
>     log.info("end")
> except TypeError:
>     log.exception("Exception raised")
>
> ----------------------------------------------------------------------------------------------------------------------------------------------
> OUTPUT message:
>
> Traceback (most recent call last):
>   File "C:\Python26\lib\logging\__init__.py", line 768, in emit
>     msg = self.format(record)
>   File "C:\Python26\lib\logging\__init__.py", line 648, in format
>     return fmt.format(record)
>   File "C:\Python26\lib\logging\__init__.py", line 436, in format
>     record.message = record.getMessage()
>   File "C:\Python26\lib\logging\__init__.py", line 306, in getMessage
>     msg = msg % self.args
> TypeError: not all arguments converted during string formatting

The logging module is swallowing the exception (and printing a
traceback), I guess because logging is considered something that
shouldn't bring your program down on error.  You can apparently define
a logging handler that overrides "handleError" to propogate the
exception if you want.

Can't tell you why it's hanging, but the logging error you're getting
is probably because your string formatter is trying to perform the
following operation:

"refer" % (ret,)


Carl Banks



More information about the Python-list mailing list