Your SlideShare is downloading. ×
Lecture 12  exceptions
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Lecture 12 exceptions

101
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
101
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introduction to computational thinkingModule 12 : ExceptionsModule 12 : ExceptionsAsst Prof Michael LeesOffice: N4‐02c‐76email: mhlees[at]ntu.edu.sg1
  • 2. Contents1. Why & What are exceptions2. Try/Except group3. Exception Philosophy4. else and finally suitesModule 12 : ExceptionsChapter 142
  • 3. Dealing with problems• Most modern languages provide ways to deal with ‘exceptional’ situations• Try to capture certain situations/failures and deal with them gracefully• All about being a good programmer!Module 12 : Exceptions 3
  • 4. What counts as an exception• Errors: Indexing past the end of a list, trying to open a nonexistent file, fetching a nonexistent key from a dictionary, etc.• Events: Search algorithm doesn’t find a value (not really an error), mail message arrives, queue event occurs.• Ending conditions: File should be closed at the end of processing, list should be sorted after being filled.• Weird stuff: For rare events, keep from clogging your code with lots of if statements. Module 12 : Exceptions 4
  • 5. General idea4 general steps:1. Keep watch on a particular section of code2. If we get an exception, raise/throw that exception (let it be known)3. Look for a catcher that can handle that kind of exception4. If found, handle it, otherwise let Python handle it (which usually halts the program)Module 12 : Exceptions 5
  • 6. Bad input• In general, we have assumed that the input we receive is correct (from a file, from the user).• This is almost never true. There is always the chance that the input could be wrong.• Our programs should be able to handle this.• "Writing Secure Code,” by Howard and LeBlanc– “All input is evil until proven otherwise.”Module 12 : Exceptions 6
  • 7. General form v1try:Code to runexcept aParticularError:Stuff to do on errorModule 12 : Exceptions 7
  • 8. Try suite• The try suite contains code that we want to monitor for errors during its execution. • If an error occurs anywhere in that try suite, Python looks for a handler that can deal with the error.• If no special handler exists, Python handles it, meaning the program halts and with an error message as we have seen so many times Module 12 : Exceptionstry:Code to run8
  • 9. Except suite• An  except suite (perhaps multiple except suites) is associated with a trysuite.• Each exception names a type of exception it is monitoring for (can handle).• If the error that occurs in the try suite matches the type of exception, then that except suite is activated.Module 12 : Exceptionsexcept aParticularError:Stuff to do on error9
  • 10. try/except group• If no exception in the try suite, skip all the try/except to the next line of code.• If an error occurs in a try suite, look for the right exception.• If found, run that except suite, and then skip past the try/except group to the next line of code.• If no exception handling found, give the error to Python.Module 12 : Exceptions 10
  • 11. Module 12 : Exceptions 11
  • 12. An exampletry:print(Entering try suite) # tracedividend = float(input(dividend:))divisor = float(input(divisor:))result = dividend/divisorprint({:2.2f} divided by {:2.2f} = ’{:2.2f}.format(dividend,divisor,result))except ZeroDivisionError:print(Divide by 0 error)except ValueError:print("Couldnt convert to a float")print(Continuing with the rest of the program)Module 12 : ExceptionsTry SuiteExcept Suite 1Except Suite 1Try/Except Group12
  • 13. What exceptions are there?• In the present Python, there is a set of exceptions that are pre‐labeled.• To find the exception for a case you are interested in, easy enough to try it in the interpreter and see what comes up.3/0 =>ZeroDivisionError: integer division or modulo byzeroModule 12 : Exceptions 13
  • 14. Module 12 : ExceptionsDetails: http://docs.python.org/library/exceptions.html14
  • 15. EXCEPTION PHILOSOPHYModule 12 : ExceptionsModule 12 : Exceptions 15
  • 16. How you deal with problemsTwo ways to deal with exceptions:• LBYL: Look Before you Leap• EAFP: Easier to Ask Forgiveness than Permission (famous quote by Grace Hopper)Module 12 : Exceptions 16
  • 17. Look before you leap• Super cautious!• Check all aspects before executing– If string required : check that– if values should be positive : check that• What happens to length of code?• And readability of code – code is hidden in checking.Module 12 : Exceptions 17
  • 18. Easier to ask forgiveness than permission• Run anything you like!• Be ready to clean up in case of error.• The try suite code reflects what you want to do, and the except code what you want to do on error. Cleaner separation!Module 12 : Exceptions 18
  • 19. A Choice• Python programmers support the EAFP approach:– Run the code (in try) and used except suites to deal with errors (don’t check first)Module 12 : Exceptionsif not isinstance(s, str) or not s.isdigit:return Noneelif len(s) > 10: # too many digits to convertreturn Noneelse:return int(str)try:return int(str)except (TypeError, ValueError, OverflowError):return NoneLBYLEAFP19
  • 20. OTHER SUITESModule 12 : ExceptionsModule 12 : Exceptions 20
  • 21. else suite• The else suite is used to execute specific code when no exception occursModule 12 : Exceptionstry:Code to runexcept aParticularError:Stuff to do on errorelseStuff to do when no error21
  • 22. finally suite• The finally suite is used to execute code at the end of try/except group (with or without error)Module 12 : Exceptionstry:Code to runexcept aParticularError:Stuff to do on errorfinallyStuff to do always at end22
  • 23. Challenge 12.1 Calculation errorsModify the calculator example from module 4 to capture some common exceptions.Module 12 : ExceptionsERROR!23
  • 24. Thought process• What errors can the code generate?• Capture the common ones and give clear instruction• Use the else condition to print out answer only when no errorModule 12 : Exceptions 24
  • 25. Take home lessons• Using exception handling to help users is important!• Different types of exceptions: events, errors, etc.• LYBL vs. EAFP• try‐except‐else‐finally suites (in many languages)Module 12 : Exceptions 25
  • 26. Further reading• http://docs.python.org/tutorial/errors.html• http://diveintopython.org/file_handling/index.html• http://oranlooney.com/lbyl‐vs‐eafp/Module 12 : Exceptions 26

×