Problems trying to hook own exception function to sys.excepthook

Sami sami.islam at NOSPAMbtinternet.com
Sun Apr 6 14:41:40 CEST 2008


Peter Otten wrote:
> Sami wrote:
> 
>> Hello,
>>
>> I am new to Python.
>>
>> I tried to hook my own ExceptionPrintingFunction sys.excepthook but it
>> does not work.
>>
>> This is what I wrote:
>> -----------------------------------------------------------------------
>> import sys
>>
>> def MyOwnExceptHook(typ, val, tb):
>> print "Inside my own hook"
>>
>> sys.excepthook = MyOwnExceptHook
>>
>> x = 1/0
>> -----------------------------------------------------------------------
>> This is what I get
>> -----------------------------------------------------------------------
>> Traceback (most recent call last):
>>    File
>> "E:/Home/Programming/Python/TryProjects/ExceptHandling1/Except5.py",
>> line 8, in <module>
>>      x = 1/0
>> ZeroDivisionError: integer division or modulo by zero
>> -----------------------------------------------------------------------
>>
>> I never see "Inside my own hook" which tells me that the hook is not
>> being called. What I really want to test is to stop the exception from
>> propagating further and leave the program intact.
>>
>> What am I doing wrong? Please let me know if there are any other newbie
>> groups that I should probably try in stead.
> 
> Are you running your code from within idle? It wraps your script in
> something like
> 
> try:
>    # run script
> except:
>    # show traceback
> 
> (Have a look at InteractiveInterpreter.runcode() in code.py if you are
> interested in the actual code) 
> 
> So your except hook never gets to see the exception and therefore won't be
> invoked. Run your script from the commandline and you will see the
> behaviour you expected.
> 
> Peter
> 

Great!! Thank you. I have been trying since yesterday to get to the 
bottom of this.

Does this mean that one should always use the command line to run a 
python program?

Sami



More information about the Python-list mailing list