Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reject Negative Numbers as exceptions in Python

I'm trying to run a basic prompt that takes a number, then runs a recursive function on it.

Any negative number causes a recursion error, for the function being unable to handle them.

Now, I've learned with Python that situations like this call for a "try/except" model. Here's what I came up with:

try: 
  choice = int(input('Enter a number: '))
  INSERT RECURSIVE FUNCTION HERE
except RecursionError as err:
  print('Error: ', str(err))

This exception doesn't work, as it still shows the entire recursive process in red lines, with my exception only replacing the final line. I know I could easily solve this by logic, for example:

if choice < 0:
  print("Error: Bro, We don't take no Negative Numbers around here.")

However, I was taught we generally want to avoid "solving errors by Logic" in Python, instead working via the "try/except" model.

What could I do to reject negative numbers via a "try/except" model instead of an "if/else"?

If you can help me understand a way to make this react to ValueError, that'd be another great help.

like image 879
Mark Puchala II Avatar asked Dec 12 '15 20:12

Mark Puchala II


1 Answers

Say, you want to print only positive numbers and if the number is negative you raise an exception

a = int(raw_input())
if a < 0:
    myError = ValueError('a should be a positive number')
    raise myError
print(a)
like image 87
alam Avatar answered Sep 20 '22 00:09

alam