Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #103732

Re: usage of try except for review.

From Dennis Lee Bieber <wlfraed@ix.netcom.com>
Newsgroups comp.lang.python
Subject Re: usage of try except for review.
Date 2016-02-29 11:40 -0500
Organization IISS Elusive Unicorn
Message-ID <mailman.24.1456764004.20602.python-list@python.org> (permalink)
References <CACT3xuWm56OE7LpR8kBLfWfkDoU18sPcN5DRiXjr=68+Kywo8Q@mail.gmail.com> <CACT3xuXA=xy8ovTQOS9Bz06P0R1FjQ=bN4-3Pxqf3Cu7wN1dXg@mail.gmail.com>

Show all headers | View raw


On Mon, 29 Feb 2016 15:33:18 +0530, Ganesh Pal <ganesh1pal@gmail.com>
declaimed the following:

>Iam on python 2.6 and Linux , need your suggestion on the usage of try
>and except in this program
>
>#!/usr/bin/env python
>
>
>"""
>"""
>import os
>import shlex
>import subprocess
>import sys
>import time
>import logging
>import run
>import pdb
>
>def run_cmd_and_verify(cmd, timeout=1000):
>
>    try:
>        out, err, ret = run(cmd, timeout=timeout)
>        assert ret ==0,"ERROR (ret %d): " \
>                " \nout: %s\nerr: %s\n" % (ret, out, err)

	If the assert triggers, it will generate an exception

	But this doesn't look like a place where an assert is really desirable,
especially when you are inside an exception trap. At least in my viewpoint
-- asserts are 1) not something for regular logic (if you run the script
with some optimization, the assert statements are "removed"; 2) they should
more be used to confirm that the entry criteria were met.

	Ask yourself: Will my program still work if I remove all the assert
statements. If the answer is "No", then you should not be using an assert.

	Can your "run()" raise an exception? Since you never show it to us we
can't tell. And if it can, which ones? However, checking a return code is
not an exceptional condition -- that's expected logic.

def rcav(cmd, to=1000):
	assert cmd is not Null, "No command provided in rcav"
	try:
		out, err, ret = run(cmd, to)
	except Exception as e:
		logging.exception("function run() failed:")
		#I need to test to see how much of the exception info is
		#automatic
	if not ret:
		logging.error("cmd '%s' failed", cmd)
	return ret	#0 is false, non-0 is true

	Note that I do not trap the assert exception -- this is the type of
event that the caller needs to see.

>        try:
>            if not run_cmd_and_verify(cmd, timeout=3600):

	Since your version of rcav() always trapped exceptions internally, this
call will never raise an exception, so using a try: block is meaningless

>                return False

	And your conditional basically comes down to:

	if False:
		return False:


>        except:
>           logging.error("Some meaningful message")
>    logging.info("Setup and Creation ....Done !!!")

	But you fall off and return Null on success...

>    #
>    cmd = "run_scan"
>    out, err, ret = run(cmd)
>
>    for cmd in ["create_data.py -nfs ",
>                "validate.py -30 "]:

	Spawning processes to run Python files seems perverse.

	You should instead write create_data.py and validate.py so that you can
do

	import create_data
	import validate


	create.data.main("-nfs")
	validate.main(-30)

-- 
	Wulfraed                 Dennis Lee Bieber         AF6VN
    wlfraed@ix.netcom.com    HTTP://wlfraed.home.netcom.com/

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: usage of try except for review. Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2016-02-29 11:40 -0500

csiph-web