Mailing List Archive

Too Broad of an exception
Hi all,
I am fairly new to python (ie < 2 years). I have a question about
pylint. I am running on windows 10/11, python 3.10.11.

Here's what I'm trying to do:
I am using robocopy to to copy a set of files to/from a LAN location and
my desktop(s). Here is the partial code:

p = subprocess.run([."robocopy.exe",
STORE_LOCATION, NEWS_LOCATION,
"/NFL", "/NDL", "/NJH", "/NJS", "/NP", "/XF",
"msgFilterRules.dat",
"xmsgFilterRules.dat"], check=False)

# this is necessary because Windows Robocopy returns
# various return codes for success.
if p.returncode >= 8:
raise Exception(f'Invalid result: {p.returncode}')

It actually runs fine. But pylint is not having it. I get:

win_get_put_tb_filters.py:61:12: W0719: Raising too general exception:
Exception (broad-exception-raised)

But the code I have written does exactly what I want. If the returncode
is 7 or less, then I have success. If the returncode is 8 or above
there is a failure and I want to see what the returncode is.

Trying to read the python Exception docs is mind bending. Any help
would be appreciated.

Richard
--
https://mail.python.org/mailman/listinfo/python-list
Re: Too Broad of an exception [ In reply to ]
On 10/25/2023 11:06 AM, Stefan Ram wrote:
> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>> outer quotation marks) prints some prominent exception types. After
>> manually removing those that do not seem to apply, I am left with:
>> "AssertionError",
>> "ChildProcessError",
> ...
>
> "Manually removing" above was meant to be a fast first pass,
> where I only excluded exception types that were obviously
> inappropriate. It is now to be followed by a search for the
> appropriate exception types among those exception types left.
>
>
@Rene & @Stefan,
I really appreciate the guidance provided. By replacing Exception with
RuntimeError, pylint seems happy! More specificity, I guess. I know
that I could have ignored the pylint exceptions, but I want to use this
as a learning experience. I looks like I have a lot of reading to do on
exception handling. IMO all of the try/except code looks quite clumsy to
me. It may be excellent for some tasks but to me, it looks quite
inelegant. Like I said, I have a lot to learn.

Thank you both for your guidance.

Richard

--
https://mail.python.org/mailman/listinfo/python-list
Re: Too Broad of an exception [ In reply to ]
On Wed, Oct 25 2023 at 11:49:12 AM, rsutton <rsutton43@comcast.net> wrote:
> On 10/25/2023 11:06 AM, Stefan Ram wrote:
>> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>>> outer quotation marks) prints some prominent exception types. After
>>> manually removing those that do not seem to apply, I am left with:
>>> "AssertionError",
>>> "ChildProcessError",
>> ...
>> "Manually removing" above was meant to be a fast first pass,
>> where I only excluded exception types that were obviously
>> inappropriate. It is now to be followed by a search for the
>> appropriate exception types among those exception types left.
>>
> @Rene & @Stefan,
> I really appreciate the guidance provided. By replacing Exception
> with RuntimeError, pylint seems happy! More specificity, I guess. I
> know that I could have ignored the pylint exceptions, but I want to
> use this as a learning experience. I looks like I have a lot of
> reading to do on exception handling. IMO all of the try/except code
> looks quite clumsy to me. It may be excellent for some tasks but to
> me, it looks quite inelegant. Like I said, I have a lot to learn.
>

From what you've described of your problem, it seems like a small-ish
utility program you're writing for your own use. You don't need any
`try`...`except` blocks in such code. You just let the exception stop
your program.

--
regards,
kushal
--
https://mail.python.org/mailman/listinfo/python-list
Re: Too Broad of an exception [ In reply to ]
On 10/25/2023 11:49 AM, rsutton via Python-list wrote:
> On 10/25/2023 11:06 AM, Stefan Ram wrote:
>> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>>> outer quotation marks) prints some prominent exception types. After
>>> manually removing those that do not seem to apply, I am left with:
>>> "AssertionError",
>>> "ChildProcessError",
>> ...
>>
>>    "Manually removing" above was meant to be a fast first pass,
>>    where I only excluded exception types that were obviously
>>    inappropriate. It is now to be followed by a search for the
>>    appropriate exception types among those exception types left.
>>
>>
> @Rene & @Stefan,
> I really appreciate the guidance provided.  By replacing Exception with
> RuntimeError, pylint seems happy!  More specificity, I guess.  I know
> that I could have ignored the pylint exceptions, but I want to use this
> as a learning experience.  I looks like I have a lot of reading to do on
> exception handling. IMO all of the try/except code looks quite clumsy to
> me.  It may be excellent for some tasks but to me, it looks quite
> inelegant.  Like I said, I have a lot to learn.

In this particular case you could probably just handle the return result
from robocopy right there. Of course, it depends on the rest of the
code. It probably doesn't really need an exception, and if you want to
handle it in the calling function, you could just return the result as a
boolean:

return p.returncode < 8 # Reversed the test since a return of "True"
# would make more sense as a return code

> Thank you both for your guidance.
>
> Richard
>

--
https://mail.python.org/mailman/listinfo/python-list
Re: Too Broad of an exception [ In reply to ]
On 26/10/2023 04.49, rsutton via Python-list wrote:
> On 10/25/2023 11:06 AM, Stefan Ram wrote:
>> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>>> outer quotation marks) prints some prominent exception types. After
...

>>    "Manually removing" above was meant to be a fast first pass,
>>    where I only excluded exception types that were obviously
>>    inappropriate. It is now to be followed by a search for the
>>    appropriate exception types among those exception types left.
>>
>>
> @Rene & @Stefan,
> I really appreciate the guidance provided.  By replacing Exception with
...


It would appear that (at least one message) did not make it to email -
neither to the list-archive.

People wishing to learn are unable to benefit a response, if it is not
sent to the list!

--
Regards,
=dn
--
https://mail.python.org/mailman/listinfo/python-list