On Fri, Aug 29, 2008 at 10:56 AM, cnb <[EMAIL PROTECTED]> wrote: > On Aug 29, 7:40 pm, Daniel <[EMAIL PROTECTED]> wrote: >> On Aug 29, 11:23 am, cnb <[EMAIL PROTECTED]> wrote: >> >> > If I get zero division error it is obv a poor solution to do try and >> > except since it can be solved with an if-clause. >> >> > However if a program runs out of memory I should just let it crash >> > right? Because if not then I'd have to write exceptions everywhere to >> > prevent that right? >> >> > So when would I actually use try-except? >> >> > If there can be several exceptions and I just want to catch 1 or 2? >> > Like >> > try: >> > blahaba >> > except SomeError: >> > do something >> >> I'm not sure whay you're trying to do, but I think catching a >> ZeroDivisionError exception is a good use of try-except. >> >> I'm also not sure that I would say you just let a program crash if it >> runs out of memory. I would think that from the user perspective, you >> would want to check memory conditions and come up with an exception >> indicating that some memory threshold has been reached. When that >> exception is raised you should indicate that to the user and exit >> gracefully. > > > A ZeroDivisionError is better avoided wth an if-clause, don't you > think? It is a predictable exception...
Basically, there's a general principle (EAFP: Easier to ask forgiveness than permission) in Python to just "try" something and then catch the exception if something goes wrong. This is in contrast to e.g. C where you're supposed to "Look before you leap" (LBYL) and check for possible error conditions before performing the operation. One of the main advantages of the Python approach is that the operation itself comes first in the code: try: a = b/c except ZeroDivisionError: #handle it versus the LBYL approach: if c == 0: #handle error a = b/c where if the error handling code isn't really short, it ends up distracting you from the operation you're actually trying to perform. This individual case (division by 0) might not be the best example due to its simplicity, but you get the general point. - Chris > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list