tryexc1.py

#!/usr/bin/env python
#
# Example of exception handling
#

import sys


def safe_open(fn, mode="r"):
    "Open file and return None if open fails"
    try:
        f = open(fn, mode)
    except:
        f = None
    return f


def safe_int(s):
    "Convert string to integer, return None if bad string"
    try:
        n = int(s)
    except:
        n = None
    return n


# Begin program
rc = 0
line = None
if len(sys.argv) != 2:
    sys.stderr.write("Usage: %s <filname>\n" % sys.argv[0])
    rc = 1
else:
    user_fn = sys.argv[1]
    user_f = safe_open(user_fn)
    line = None
    if user_f == None:
        sys.stderr.write("Failed to open %s\n" % user_fn)
        rc = 2
    else:
        try:
            line = user_f.readline()
        except:
            sys.stderr.write("Failed to read line from %s\n" % user_fn)
            rc = 3
if rc == 0:
    n = safe_int(line)
    if n == None:
        sys.stderr.write("Failed to convert to int line: %s\n" % line)
        rc = 4
    else:
        sys.stdout.write("n=%d\n" % n)
sys.exit(rc)

Generated by GNU enscript 1.6.4.