can try expect have if else.

Steven D'Aprano steve at pearwood.info
Mon Feb 22 05:36:06 EST 2016


On Mon, 22 Feb 2016 03:12 am, Ganesh Pal wrote:

> Hi Team,
> 
> Iam on python 2.6 , need input on the below piece of code.
> 
> 
> EXIT_STATUS_ERROR=1
> 
> def create_dataset():
>     """
>      """
>     logging.info("Dataset create.....Started !!!")
>     try:
>         if os.path.ismount("/nfs_mount"):
>             touch_file("inode_fixcrc.txt")
>             logging.info("Dataset create.....Done !!!")
>         else:
>             raise Exception("/nfs_mount is not mounted. Dataset create
> failed !!!")
>             return False

You should not raised Exception directly.

The "return False" line is dead code, it will never be executed.


>     except Exception as e:
>             logging.error(e)
>             sys.stderr.write("Dataset create failed...Exiting !!!")
>             sys.exit(EXIT_STATUS_ERROR)
>     return True
> 
> 1. Can we have if else with in a try except block

Did you try it to see what would happen?

Yes, you can have an if...else block inside a try block.



> 2. How can the above code be improved


# Use a custom exception type.
class CreateDatasetError(OSError):
    pass

def touch_file(path, filename):
    """Raises OSError or IOError if path is not a mounted mount point, 
    and path/filename cannot be created.
    """
    if not os.path.ismount(path):
        raise CreateDatasetError('%s is not mounted, create failed.' % path)
    else:
        fullname = os.join(path, filename)
        f = open(fullname, 'w')
        f.close()


EXIT_STATUS_ERROR=1

def create_dataset():
    """
    """
    logging.info("Dataset create.....Started !!!")
    try:
        touch_file("/nfs_mount", "inode_fixcrc.txt")
    except (IOError, OSError) as e:
        logging.error(e)
        sys.stderr.write("Dataset create failed...Exiting !!!")
        sys.exit(EXIT_STATUS_ERROR)
    logging.info("Dataset create.....Done !!!")





-- 
Steven




More information about the Python-list mailing list