In [ ]:
# exceptions
# pre-production

In [1]:
num1 = int(raw_input("please enter your number1:"))
num2 = int(raw_input("please enter your number2:"))
result = num1/num2
print "result of division is {} ".format(result)


please enter your number1:10
please enter your number2:2
result of division is 5 

In [2]:
num1 = int(raw_input("please enter your number1:"))
num2 = int(raw_input("please enter your number2:"))
result = num1/num2
print "result of division is {} ".format(result)


please enter your number1:10
please enter your number2:0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-2-816e8377dbf6> in <module>()
      1 num1 = int(raw_input("please enter your number1:"))
      2 num2 = int(raw_input("please enter your number2:"))
----> 3 result = num1/num2
      4 print "result of division is {} ".format(result)

ZeroDivisionError: integer division or modulo by zero

In [3]:
num1 = int(raw_input("please enter your number1:"))
num2 = int(raw_input("please enter your number2:"))
result = num1/num2
print "result of division is {} ".format(result)


please enter your number1:ten
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-816e8377dbf6> in <module>()
----> 1 num1 = int(raw_input("please enter your number1:"))
      2 num2 = int(raw_input("please enter your number2:"))
      3 result = num1/num2
      4 print "result of division is {} ".format(result)

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

In [4]:
# what are various exception
import exceptions as e

In [5]:
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: computation part or most important work.
# except: exception handling.
# else: if try block is not hitting any exceptions please go to else block.

In [6]:
# case 1
try:
    num1 = int(raw_input("please enter your number1:"))
    num2 = int(raw_input("please enter your number2:"))
    result = num1/num2
except:
    print "please make sure your enter numbers.Make sure your donominator is non-zero."
else:
    print "result of division is {} ".format(result)


please enter your number1:10
please enter your number2:2
result of division is 5 

In [7]:
# case 2:
try:
    num1 = int(raw_input("please enter your number1:"))
    num2 = int(raw_input("please enter your number2:"))
    result = num1/num2
except:
    print "please make sure your enter numbers.Make sure your donominator is non-zero."
else:
    print "result of division is {} ".format(result)


please enter your number1:ten
please make sure your enter numbers.Make sure your donominator is non-zero.

In [8]:
# case 3:
try:
    num1 = int(raw_input("please enter your number1:"))
    num2 = int(raw_input("please enter your number2:"))
    result = num1/num2
except:
    print "please make sure your enter numbers.Make sure your donominator is non-zero."
else:
    print "result of division is {} ".format(result)


please enter your number1:10
please enter your number2:0
please make sure your enter numbers.Make sure your donominator is non-zero.

In [15]:
# tuple of exceptions
try:
    num1 = int(raw_input("please enter your number1:"))
    num2 = int(raw_input("please enter your number2:"))
    result = num1/num2
except (ValueError,ZeroDivisionError):
    print "please make sure your enter numbers.Make sure your donominator is non-zero."
else:
    print "result of division is {} ".format(result)


please enter your number1:10
please enter your number2:2
result of division is 5 

In [16]:
# granular exception output.
try:
    num1 = int(raw_input("please enter your number1:"))
    num2 = int(raw_input("please enter your number2:"))
    result = num1/num2
except ValueError:
    print "please make sure your enter numbers."
except ZeroDivisionError:
    print "Make sure your donominator is non-zero."
else:
    print "result of division is {} ".format(result)


please enter your number1:10
please enter your number2:0
Make sure your donominator is non-zero.

In [20]:
try:
    num1 = int(raw_input("please enter your number1:"))
    num2 = int(raw_input("please enter your number2:"))
    result = num1/num2
except ValueError:
    print "please make sure your enter numbers."
except ZeroDivisionError:
    print "Make sure your donominator is non-zero."
else:
    print "result of division is {} ".format(result)


please enter your number1:ten
please make sure your enter numbers.

In [ ]:
# try..except..else..finally
# try: computation part or most important work.
# except: exception handling.
# else: if try block is not hitting any exceptions please go to else block.
# finally:
# case1 : all valid inputs - try .. else .. finally
# case2 : invalid values - handled by exceptions - try..except..finally
# case3 : invalid values - not handled by exceptions - try.. finally.. bombed with exception.

In [24]:
try:
    num1 = int(raw_input("please enter your number1:"))
    num2 = int(raw_input("please enter your number2:"))
    result = num1/num2
except ValueError:
    print "please make sure your enter numbers."
else:
    print "result of division is {} ".format(result)
finally:
    print "all is good"
    # file close,socket close.


please enter your number1:10
please enter your number2:0
all is good
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-24-0e184dbaedc2> in <module>()
      2     num1 = int(raw_input("please enter your number1:"))
      3     num2 = int(raw_input("please enter your number2:"))
----> 4     result = num1/num2
      5 except ValueError:
      6     print "please make sure your enter numbers."

ZeroDivisionError: integer division or modulo by zero

In [25]:
# raise
raise SyntaxError


  File "<string>", line unknown
SyntaxError

In [26]:
raise SyntaxError,"please clean you glasses"


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

In [27]:
pint "hello world"


  File "<ipython-input-27-48713df50b5d>", line 1
    pint "hello world"
                     ^
SyntaxError: invalid syntax

In [28]:
# raise santosh
# santosh is not part of Exception class.

raise santosh


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-28-8ad894519c21> in <module>()
      1 # raise santosh
      2 
----> 3 raise santosh

NameError: name 'santosh' is not defined

In [29]:
# class based inheritance.
class santosh(Exception):
    pass

In [30]:
raise santosh,"i am back"


---------------------------------------------------------------------------
santosh                                   Traceback (most recent call last)
<ipython-input-30-0a7ae72f2cba> in <module>()
----> 1 raise santosh,"i am back"

santosh: i am back

In [ ]: