NEW SERVER - 11.9.2020 ... Retiring, March 2020 - sorry, you have missed our final public course.
The Coronavirus situation has lead us to suspend public training - which was on the cards anyway, with no plans to resume
Please ask about private 'maintenance' training for Python, Tcl, Perl, PHP, Lua, etc
Happily continuing private consultancy / programming work
String to number conversion with error trapping in Ruby
You've read in a string of text in Ruby - perhaps the user's input, or perhaps from a file. You know that string shoould
contain a number - so you use the to_i
method to do the conversion. But there's a problem - if the string doesn't start with a number, it won't convert correctly - it will just return a zero. And you'll probably want to know there's a problem so that you can deal with it.
The solution is to use the built in Integer
function and pass it the string - i.e. replace:
value = stuff.to_i
value = Integer(stuff)
When you run that code on a string that does correctly contain a string that converts to an integer, there's no difference to see in how you code works. But if there's an error, Integer
throws an exception.
Include your Integer
call within a begin
block .. and within that block, also provide a rescue
section. Ruby will start running the main part of the block when it arrives at that piece of the code, and if the main part of the block runs correctly it will skip the rescue
section. But if something goes in the main section of the block, it will jump straight away to the rescue
Here's an example ... if there is a valid integer in the said
string, it is added to total_so_far, and the goodvalues variable is incremented. But if there is not a number in said, then a controlled error message is generated:
total_so_far += Integer(said)
goodvalues += 1
puts "Sorry - not accepted"
The complete example, with some sample results, is [here]
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesR111 - Ruby - Exceptions. 
Exceptions in Ruby - throwing, catching and using - (2016-05-17) 
Reading and checking user inputs - first lessons - Ruby - (2013-02-17) 
Sorta sorting a hash, and what if an exception is NOT thrown - Ruby - (2011-09-12) 
Exceptions - a fail-safe way of trapping things that may go wrong - (2011-09-11) 
Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23) 
Insurance against any errors - Volcanoes and Python - (2011-02-19) 
Handling unusual and error conditions - exceptions - (2010-02-03) 
Ruby collections and strings - some new examples - (2010-02-03) 
Direct access to object variable (attributes) in Ruby - (2010-02-02) 
What are exceptions - Python based answer - (2008-11-08)
Some other Articles
Passing code to procedures and yield in RubyWhat are Ruby Symbols?Comparing floating point numbers - a word of caution and a solutionDefining a static method - Java, Python and RubyString to number conversion with error trapping in RubyNeatly formatting results into a tableConstants in RubyThe Model, View, Controller architecture (MVC) - what, why and how.Sunday Evening, City of LondonCheat Sheet - what do you need for Ruby on Rails?
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
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).