Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
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:

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


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

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

R111 - Ruby - Exceptions.
  [1875] What are exceptions - Python based answer - (2008-11-08)
  [2615] String to number conversion with error trapping in Ruby - (2010-02-01)
  [2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
  [2621] Ruby collections and strings - some new examples - (2010-02-03)
  [3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
  [3435] Sorta sorting a hash, and what if an exception is NOT thrown - Ruby - (2011-09-12)
  [4008] Reading and checking user inputs - first lessons - Ruby - (2013-02-17)
  [4675] Exceptions in Ruby - throwing, catching and using - (2016-05-17)


Back to
Comparing German, Dutch and British Railways
Previous and next
or
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
4759 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, 89, 90, 91, 92, 93, 94, 95, 96 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., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3177_.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb