Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
Insurance against any errors - Volcanoes and Python

Have you heard of people who have taken out insurance, only do discover that they're not covered for some eventuality - "but the list of circumstances doesn't include your flight being canceled because the plane couldn't fly through volcanic ash" is a story that many people heard, with an irony that no-one had even thought of that eventuality before it happened.

There has to be a better way. And in programming, there is!

We have long been encouraged - and I encourage delegates on courses - to check the external environment to their program. That's user inputs to make sure that when a number is asked for, they really have entered a number. It's checking the file system to make sure that a file they have asked to read really does exist. And it's checking that a network connection is alive if you're going to use a network resource. But such checks cannot allow for every eventuality, and something else is needed.

The "fail safe" way of mopping up all fluky errors (and a lot of the standard ones too) is to use an exception - where you write you code along the lines of "try to do X, and if it doesn't work for any reason, do Y to handle the problem. The syntax varies in different languages - in Python, we use the keyword try to preface the code that we want to put in a safety net, and we use the keyword except to specify the code that's to be run if the first block needs to be rescued.

From the Python course, just completed in Frankfurt - applying the net:

    said = raw_input(pr)
    val = int(said)

And what to do when your user lands in the net and needs a rescue:

    print "Error - expected a whole number"

The complete source example - which includes a reprompt and further read from the user if an integer is not received -is [here]. The same principle applies in other languages - in Ruby you have a begin and a rescue block. Source example [here]

Note - even with exceptions there can be slightly more to it than just a single safety net. We've chosen in the complete example to reprompt the user which initially you might think is always a good thing to do. However, if the user's input was an end of file, there is no point in trying to read any further - and to do so may even put our program into an infinite loop. So I've added a second except block to my source, and it's first in the source so that it takes precedence - to specifically catch end-of-file conditions and handle them in a different way.
(written 2011-02-19, updated 2011-02-20)

Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
R111 - Ruby - Exceptions.
  [4008] Reading and checking user inputs - first lessons - Ruby - (2013-02-17)
  [3435] Sorta sorting a hash, and what if an exception is NOT thrown - Ruby - (2011-09-12)
  [3433] Exceptions - a fail-safe way of trapping things that may go wrong - (2011-09-11)
  [3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
  [2622] Handling unusual and error conditions - exceptions - (2010-02-03)
  [2621] Ruby collections and strings - some new examples - (2010-02-03)
  [2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
  [2615] String to number conversion with error trapping in Ruby - (2010-02-01)
  [1875] What are exceptions - Python based answer - (2008-11-08)

Y109 - Python - Exceptions
  [4161] Python varables - checking existance, and call by name or by value? - (2013-08-27)
  [4029] Exception, Lambda, Generator, Slice, Dict - examples in one Python program - (2013-03-04)
  [3930] Reporting the full stack trace when you catch a Python exception - (2012-11-22)
  [3913] How many times ... has this loco headed west through Tenby? - Python exceptions - (2012-11-05)
  [3664] Error checking in a Python program - making your program robust via exceptions - (2012-03-22)
  [3441] Pressing ^C in a Python program. Also Progress Bar. - (2011-09-15)
  [2998] Using an exception to initialise a static variable in a Python function / method - (2010-10-13)
  [2994] Python - some common questions answered in code examples - (2010-10-10)
  [2408] Robust user input (exception handling) example in Python - (2009-09-17)
  [2368] Python - fresh examples of all the fundamentals - (2009-08-20)
  [2281] Python - using exceptions to set a fallback - (2009-07-12)
  [2018] UnboundLocalError - Python Message - (2009-01-31)
  [1236] Trying things in Python - (2007-06-18)
  [1042] Nested exceptions in Python - (2007-01-18)
  [381] Exceptions in Python - (2005-07-17)

Back to
Comparing German, Dutch and British Railways
Previous and next
Horse's mouth home
Forward to
The cost of roadworks on the economy of our town - 1800 pounds per hour?
Some other Articles
Beware - a=a+b and a+=b are different - Python
Age limits for Well House Consultants Open Source courses?
Oops - I typed ci not vi, and have lost my file ...
The cost of roadworks on the economy of our town - 1800 pounds per hour?
Insurance against any errors - Volcanoes and Python
Comparing German, Dutch and British Railways
The Rhine in winter
Sharing a single hotel internet connection without carrying extra hardware
What is the Melksham Chamber of Commerce?
On consultations, car parking, and Melksham town centre
4398 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88 at 50 posts per page

This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2015: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3177_Ins ... ython.html • PAGE BUILT: Thu Sep 18 15:30:25 2014 • BUILD SYSTEM: WomanWithCat