In [ ]:
# exception handling - error handling

In [1]:
# case I
num1 = int(raw_input("please enter num1:"))
num2 = int(raw_input("please enter num2:"))
result = num1/num2
print "result is {}".format(result)


please enter num1:10
please enter num2:2
result is 5

In [2]:
# case II
num1 = int(raw_input("please enter num1:"))
num2 = int(raw_input("please enter num2:"))
result = num1/num2
print "result is {}".format(result)


please enter num1:ten
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-f8960829d15f> in <module>()
      1 # case I
----> 2 num1 = int(raw_input("please enter num1:"))
      3 num2 = int(raw_input("please enter num2:"))
      4 result = num1/num2
      5 print "result is {}".format(result)

ValueError: invalid literal for int() with base 10: 'ten'

In [3]:
# case III
num1 = int(raw_input("please enter num1:"))
num2 = int(raw_input("please enter num2:"))
result = num1/num2
print "result is {}".format(result)


please enter num1:10
please enter num2:0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-3-3694b61ba71f> in <module>()
      2 num1 = int(raw_input("please enter num1:"))
      3 num2 = int(raw_input("please enter num2:"))
----> 4 result = num1/num2
      5 print "result is {}".format(result)

ZeroDivisionError: integer division or modulo by zero

In [5]:
# what are the different exceptions python supports.
import exceptions as e
print dir(e)


['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '__doc__', '__name__', '__package__']

In [ ]:
## try..except..else..finally
# try - code which is mandatory,but which can raise exceptions.
# except - what we need to do with exceptions.
# else - if try is true,what to do

In [6]:
# case I
try:
    num1 = int(raw_input("please enter num1:"))
    num2 = int(raw_input("please enter num2:"))
    result = num1/num2
except:
    print "please make sure you enter numbers.make sure your denominator is not zero."
else:
    print "result is {}".format(result)


please enter num1:10
please enter num2:2
result is 5

In [7]:
# case II
try:
    num1 = int(raw_input("please enter num1:"))
    num2 = int(raw_input("please enter num2:"))
    result = num1/num2
except:
    print "please make sure you enter numbers.make sure your denominator is not zero."
else:
    print "result is {}".format(result)


please enter num1:ten
please make sure you enter numbers.make sure your denominator is not zero.

In [8]:
# case II
try:
    num1 = int(raw_input("please enter num1:"))
    num2 = int(raw_input("please enter num2:"))
    result = num1/num2
except:
    print "please make sure you enter numbers.make sure your denominator is not zero."
else:
    print "result is {}".format(result)


please enter num1:10
please enter num2:0
please make sure you enter numbers.make sure your denominator is not zero.

In [11]:
## trap specific exceptions
## tuple of exceptions

# case I
try:
    num1 = int(raw_input("please enter num1:"))
    num2 = int(raw_input("please enter num2:"))
    result = num1/num2
except (ValueError,ZeroDivisionError):
    print "please make sure you enter numbers.make sure your denominator is not zero."
else:
    print "result is {}".format(result)


please enter num1:10
please enter num2:0
please make sure you enter numbers.make sure your denominator is not zero.

In [13]:
## trap specific exceptions
## 

# case I
try:
    num1 = int(raw_input("please enter num1:"))
    num2 = int(raw_input("please enter num2:"))
    result = num1/num2
except ValueError:
    print "please make sure you enter numbers."
except ZeroDivisionError:
    print "make sure your denominator is not zero."
else:
    print "result is {}".format(result)


please enter num1:ten
please make sure you enter numbers.

In [ ]:
## try..except..else..finally
# try - code which is mandatory,but which can raise exceptions.
# except - what we need to do with exceptions.
# else - if try is true,what to do
# finally:
# case I: if i enter values,which are all valid.- try .. else .. finally.
# case II: if i enter values,which are invalid but handled by exception - try..except..finally
# case III: if i enter values,which are invalid but not handled by exception - try..finally..
# bombedout with a error.

In [16]:
try:
    num1 = int(raw_input("please enter num1:"))
    num2 = int(raw_input("please enter num2:"))
    result = num1/num2
except ValueError:
    print "please make sure you enter numbers."
else:
    print "result is {}".format(result)
finally:
    print "All is Well.."
    # file.close,db.close,socket.close


please enter num1:10
please enter num2:0
All is Well..
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-16-6db094e791c9> in <module>()
      3     num1 = int(raw_input("please enter num1:"))
      4     num2 = int(raw_input("please enter num2:"))
----> 5     result = num1/num2
      6 except ValueError:
      7     print "please make sure you enter numbers."

ZeroDivisionError: integer division or modulo by zero

In [17]:
# raise
raise SyntaxError


  File "<string>", line unknown
SyntaxError

In [18]:
raise SyntaxError,"please clean your glasses!!!"


  File "<string>", line unknown
SyntaxError: please clean your glasses!!!

In [19]:
# custome exceptions
# your exception should be part of Exception class

raise santosh


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-19-f58915bf2b9e> in <module>()
      1 # custome exceptions
      2 
----> 3 raise santosh

NameError: name 'santosh' is not defined

In [ ]: