Purpose: to discuss the issues of when and how to write exception handling code. * What is exception handling? * When should one write exception handling code? * When should one ''NOT'' write exception handling code? * What tools exist to aid in writing exception handling code? * How exception handling works ---- [hv] - Here is a short snippet showing how to use the [return] with -code to throw an exception proc double {x} { if {![string is integer $x]} { return -code error "double expects an int, not '$x'" } return [expr $x * 2] } set x 5 puts "x = $x" puts "2x = [double $x]" set x "Hello" puts "x = $x" if {[catch {puts "2x = [double $x]"} errmsg]} { puts "Error: $errmsg" } ---- [Category Discussion]