Python handling the name error exception

I wrote a small code and tried to handle the name error exception. I want to print a custom message even if there is an exception, but it is showing the complete the trace back.

#!/usr/bin/python -tt

import logging

def equaldigits(a, b):
    logging.basicConfig(filename='run.log',level=logging.INFO)
    try:
      c = a - b
      logging.info('%s is the difference between both the digits', str(c))
      print c
      return c
    except NameError as e:
      c = 'Unable to successfully complete execution'
      logging.info(c)
      print c
      #return c

def main():
  print '\n1st call'
  equaldigits(10, 10)
  print '\n2nd call'
  equaldigits(1, 0)
  print '\nException call'
  equaldigits(a, 0)

# Standard boilerplate to call the main() function.
if __name__ == '__main__':
  main()

This is the console output

1st call
0

2nd call
1

Exception call
Traceback (most recent call last):
  File "./sut.py", line 28, in <module>
    main()
  File "./sut.py", line 24, in main
    equaldigits(a, 0)
NameError: global name 'a' is not defined

Answers


In your attempt to catch an exception, you wrote equaldigits(a, 0). The interpreter sees the a and thinks it is a variable that isn't there, thus throwing the uncaught exception. In order to test your try/catch, you need to pass the letter a, like so

equaldigits('a', 0)
            ^ ^ note the quotes

The problem isn't happening within your equaldigits function where you have your logging information.

Its happening in your main function when the interpreter tries to pass the value of a to equaldigits. The variable a doesn't exist within the local scope of main, thus Python tries to find a global variable named a. Since it doesn't see one, it throws a NameError.


Your error is caused by the fact that a is not defined when you call equaldigits, the execution doesn't get to the try/except clause inside the function.

when you change

a - b 

to

a - d

inside the function you'll see that your try/except works fine


Need Your Help

Refactor Exception Handling

java netbeans exception-handling refactoring

Ok i have sinned, i wrote too much code like this

Can JavaScript files be used in Android?

java javascript android

I need to add some JavaScript code to my program. Is it possible to add .js files in Android?

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.