In [ ]:
# exceptions
# errors
# costliest errors

In [1]:
# example1
num1 = int(raw_input("please enter a number1:"))
num2 = int(raw_input("please enter a number2:"))
result = num1/num2
print result


please enter a number1:10
please enter a number2:2
5

In [2]:
num1 = int(raw_input("please enter a number1:"))
num2 = int(raw_input("please enter a number2:"))
result = num1/num2
print result


please enter a number1:a
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-7976f264fa97> in <module>()
----> 1 num1 = int(raw_input("please enter a number1:"))
      2 num2 = int(raw_input("please enter a number2:"))
      3 result = num1/num2
      4 print result

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

In [3]:
num1 = int(raw_input("please enter a number1:"))
num2 = int(raw_input("please enter a number2:"))
result = num1/num2
print result


please enter a number1:10
please enter a number2:0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-3-7976f264fa97> in <module>()
      1 num1 = int(raw_input("please enter a number1:"))
      2 num2 = int(raw_input("please enter a number2:"))
----> 3 result = num1/num2
      4 print result

ZeroDivisionError: integer division or modulo by zero

In [4]:
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 [6]:
# how to handle exceptions in python
# try..except..else..finally
# try: mandatory statements/computation
# except: how to take care of exceptions.
# else: if try is True,we have no exception, please go the else block.

# usecase 1:
try:
    num1 = int(raw_input("please enter a number1:"))
    num2 = int(raw_input("please enter a number2:"))
    result = num1/num2
except:
    print "please use numbers.Make sure  your denominator is non-zero."
else:
    print result


please enter a number1:10
please enter a number2:2
5

In [7]:
# usecase 2:
try:
    num1 = int(raw_input("please enter a number1:"))
    num2 = int(raw_input("please enter a number2:"))
    result = num1/num2
except:
    print "please use numbers.Make sure  your denominator is non-zero."
else:
    print result


please enter a number1:a
please use numbers.Make sure  your denominator is non-zero.

In [8]:
# usecase 3:
try:
    num1 = int(raw_input("please enter a number1:"))
    num2 = int(raw_input("please enter a number2:"))
    result = num1/num2
except:
    print "please use numbers.Make sure  your denominator is non-zero."
else:
    print result


please enter a number1:10
please enter a number2:0
please use numbers.Make sure  your denominator is non-zero.

In [12]:
# defining your exceptions
try:
    num1 = int(raw_input("please enter a number1:"))
    num2 = int(raw_input("please enter a number2:"))
    result = num1/num2
except (ValueError,ZeroDivisionError):
    print "please use numbers.Make sure  your denominator is non-zero."
else:
    print result


please enter a number1:10
please enter a number2:0
please use numbers.Make sure  your denominator is non-zero.

In [14]:
# granular run on the exceptions
try:
    num1 = int(raw_input("please enter a number1:"))
    num2 = int(raw_input("please enter a number2:"))
    result = num1/num2
except ValueError:
    print "please use numbers."
except ZeroDivisionError:
    print "Make sure  your denominator is non-zero."
else:
    print result


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

In [4]:
# finally:
# we haven't handled a exception in our code.
# case 1: i give all valid values -> try..else..finally.
# case 2: i give invalid values, but handled by exceptions -> try..except..finally.
# case 3: i give invalid values, not handled by exceptions -> try..finally..bombed out with exception.

# finally: to close all the resources
# file.close,db.close,socket.close
# any cleanup .

In [3]:
try:
    num1 = int(raw_input("please enter a number1:"))
    num2 = int(raw_input("please enter a number2:"))
    result = num1/num2
except ValueError:
    print "please use numbers."
else:
    print result
finally:
    print "All is well :)"


please enter a number1:10
please enter a number2:0
All is well :)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-3-7539de847917> in <module>()
      2     num1 = int(raw_input("please enter a number1:"))
      3     num2 = int(raw_input("please enter a number2:"))
----> 4     result = num1/num2
      5 except ValueError:
      6     print "please use numbers."

ZeroDivisionError: integer division or modulo by zero

In [5]:
# raise

pint "hello world"


  File "<ipython-input-5-e4da7b965995>", line 3
    pint "hello world"
                     ^
SyntaxError: invalid syntax

In [6]:
raise SyntaxError,"invalid syntax"


  File "<string>", line unknown
SyntaxError: invalid syntax

In [8]:
# we are not able to raise the santosh
# santosh is not part of exception class.
raise santosh


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-7b3ab91e8c5d> in <module>()
      1 # we are not able to raise the santosh
      2 # santosh is not part of exception class.
----> 3 raise santosh

NameError: name 'santosh' is not defined

In [9]:
# customized exceptions
class santosh(Exception):
    pass

In [10]:
raise santosh,"I am back!!"


---------------------------------------------------------------------------
santosh                                   Traceback (most recent call last)
<ipython-input-10-b76f53cab8c7> in <module>()
----> 1 raise santosh,"I am back!!"

santosh: I am back!!

In [ ]: