Where a command may fail in Tcl (causing Tcl to crash), you can defer it within a
catch command. That will return a true value if it fails, and an optional extra parameter gives you the associated error message.
A program to look for the biggest file in or below a directory
[here] fails if you run it on a tree with any empty folders, at
set files [glob "$current/*"]
but that problem may be overcome with a
catch:
if {[catch {set files [glob "$current/*"]}]} {
set $files ""
}
Updated code
[here].
There's a second catch withn our example too - where the code checks for the file size, it's necessary to catch the
file size if it might be used on a "special" such as a socket, pipe or device file.
From our
Tcl Programming course as run last week.
(written 2015-10-10)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
T209 - Tcl/Tk - File and Directory Handling [779] The fragility of pancakes - and better structures - (2006-06-26)
[785] Running external processes in Tcl and Tcl/Tk - (2006-06-29)
[1407] Reading from another process in Tcl (pipes and sockets) - (2007-10-26)
[1426] Buffering up in Tcl - the empty coke can comparison - (2007-11-10)
[1467] stdout v stderr (Tcl, Perl, Shell) - (2007-12-10)
[2467] Tcl - catching an error before your program crashes - (2009-10-22)
[3192] Tcl - Some example of HOW TO in handling data files and formats - (2011-03-04)
[3320] Reading the nth line from a file (Perl and Tcl examples) - (2011-06-09)
[3429] Searching through all the files in or below a directory - Ruby, Tcl, Perl - (2011-09-09)
[3617] The fileutil package and a list of file system commands in Tcl - (2012-02-18)
[4461] Reading from a URL, and reading Json, from your Tcl script - (2015-03-12)
[4524] Tcl - a new example for data reformatting - (2015-10-10)
T214 - Tcl/Tk - Other Facilities in Tcl [239] What and why for the epoch - (2005-03-08)
[364] pu daily and p hourly - (2005-06-30)
[366] Error handling in Tcl through catch - (2005-07-02)
[461] Shortened interactive commands - (2005-10-11)
[748] Getting rid of variables after you have finished with them - (2006-06-06)
[782] Converting between Hex and Decimal in Tcl - (2006-06-28)
[1277] AgtInvoke - a command to drive Agilent Tcl software extensions - (2007-07-26)
[1334] Stable sorting - Tcl, Perl and others - (2007-09-06)
[1338] Handling Binary data in Tcl (with a note on C) - (2007-09-09)
[3287] Exceptions - Tcl style - (2011-05-12)
[3570] Trapping errors in Tcl - the safety net that catch provides - (2012-01-06)
[3583] Expanding a list of parameters in Tcl - {*} and eval - (2012-01-17)
[4207] Exception handling in Tcl - (2013-11-14)
[4525] What does Tcl do if you try to run a command that is not defined? - (2015-10-10)
[4762] Coverage map in Tcl - how many times has each proc been called? - (2017-09-28)
Some other Articles
Hello Flask world / Python web micro frameworkDay trip to LancasterCatching failed commands and not crashing the program in TclLoading packages in your Tcl programShould we get an AA or Visit Wiltshire hotel assessment?No cold sales calls please - but delighted to hear from others!Course Schedule - October 2015 to June 2016Open source programming courses - October to December 2015