In [ ]:
# exceptions
# handling errors

In [5]:
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 [1]:
# Example 1

num1 = int(raw_input("please enter your num1:"))
num2 = int(raw_input("please enter your num2:"))
result = num1/num2
print "The output is {}".format(result)


please enter your num1:10
please enter your num2:2
The output is 5

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


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

ZeroDivisionError: integer division or modulo by zero

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


please enter your num1:ten
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-6d982bf29758> in <module>()
----> 1 num1 = int(raw_input("please enter your num1:"))
      2 num2 = int(raw_input("please enter your num2:"))
      3 result = num1/num2
      4 print "The output is {}".format(result)

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

In [ ]:
# try..except..else..finally
# try -> main block of your code.
# except -> it take care of all exceptions.
# else -> else block comes into action if your try is true.

In [8]:
try:
    num1 = int(raw_input("please enter your num1:"))
    num2 = int(raw_input("please enter your num2:"))
    result = num1/num2
except:
    print "Hey there please enter numbers.Make sure your denominator is non-zero."
else:
    print "The output is {}".format(result)


please enter your num1:ten
Hey there please enter numbers.Make sure your denominator is non-zero.

In [9]:
try:
    num1 = int(raw_input("please enter your num1:"))
    num2 = int(raw_input("please enter your num2:"))
    result = num1/num2
except (ValueError,ZeroDivisionError):
    print "Hey there please enter numbers.Make sure your denominator is non-zero."
else:
    print "The output is {}".format(result)


please enter your num1:10
please enter your num2:0
Hey there please enter numbers.Make sure your denominator is non-zero.

In [10]:
try:
    num1 = int(raw_input("please enter your num1:"))
    num2 = int(raw_input("please enter your num2:"))
    result = num1/num2
except ValueError:
    print "Hey there please enter numbers."
except ZeroDivisionError:
    print "Make sure your denominator is non-zero."
else:
    print "The output is {}".format(result)


please enter your num1:ten
Hey there please enter numbers.

In [ ]:
# try..except..else..finally
# try -> main block of your code.
# except -> it take care of all exceptions.
# else -> else block comes into action if your try is true.
# Finally
# case I: we gave valid values as input.. try..else..finally.
# case II: we gave invalid value.. handled by exception .. try..except..finally
# case III: we gave invalid values.. not handled by exceptions .. try..finally..bombedout.

In [13]:
try:
    num1 = int(raw_input("please enter your num1:"))
    num2 = int(raw_input("please enter your num2:"))
    result = num1/num2
except ValueError:
    print "Hey there please enter numbers."
else:
    print "The output is {}".format(result)
finally:
    print "All is well!!!"


please enter your num1:10
please enter your num2:0
All is well!!!
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-13-c0f2d09203c0> in <module>()
      2     num1 = int(raw_input("please enter your num1:"))
      3     num2 = int(raw_input("please enter your num2:"))
----> 4     result = num1/num2
      5 except ValueError:
      6     print "Hey there please enter numbers."

ZeroDivisionError: integer division or modulo by zero

In [ ]:
# finally block is for closing the connections.
# socket,database,os connection.

In [15]:
# raise

raise SyntaxError


  File "<string>", line unknown
SyntaxError

In [16]:
raise SyntaxError,"Please clean your glasses!!!"


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

In [17]:
# custome exceptions
raise santosh


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-17-376fa46eaf01> in <module>()
      1 # custome exceptions
----> 2 raise santosh

NameError: name 'santosh' is not defined

In [18]:
class santosh(Exception):
    pass

raise santosh,"I am back!!!"


---------------------------------------------------------------------------
santosh                                   Traceback (most recent call last)
<ipython-input-18-96d4473b9065> in <module>()
      2     pass
      3 
----> 4 raise santosh,"I am back!!!"

santosh: I am back!!!

In [ ]: