aboutsummaryrefslogtreecommitdiff
path: root/tests/errors.tcl
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 10:43:22 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:39 +1000
commitc52b491011be94e796ce8c28a16249ca62256084 (patch)
tree194336bdc3b89bd7a299174785938209a68127cf /tests/errors.tcl
parent16360e9b8aded842ab0d343969eb13354750b5bb (diff)
downloadjimtcl-c52b491011be94e796ce8c28a16249ca62256084.zip
jimtcl-c52b491011be94e796ce8c28a16249ca62256084.tar.gz
jimtcl-c52b491011be94e796ce8c28a16249ca62256084.tar.bz2
Improve error handling
*: Improve stack trace handling on errors *: Add 'info source' *: Add 'info stacktrace' *: Add errorInfo procedure to generate a human readable stack trace *: Add tests for stacktrace ------------------------------------------------------------------------
Diffstat (limited to 'tests/errors.tcl')
-rw-r--r--tests/errors.tcl58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/errors.tcl b/tests/errors.tcl
new file mode 100644
index 0000000..f6ecc32
--- /dev/null
+++ b/tests/errors.tcl
@@ -0,0 +1,58 @@
+# Package which can generate a variety of errors at known locations
+
+proc error_generator {type} {
+ switch $type \
+ badcmd {
+ bogus command called
+ } \
+ badvar {
+ incr bogus
+ } \
+ error {
+ error bogus
+ } \
+ interpbadvar {
+ set x "some $bogus text"
+ } \
+ interpbadcmd {
+ set x "some $bogus text"
+ } \
+ package {
+ package require dummy
+ } \
+ source {
+ source dummy.tcl
+ } \
+ badpackage {
+ package require bogus
+ } \
+ default {
+ puts "Unknown type=$type"
+ }
+}
+
+
+
+
+
+
+
+# line 40: Some empty lines above so that line numbers don't change
+proc error_caller {type {method call}} {
+ switch $method \
+ call {
+ error_generator $type
+ } \
+ uplevel {
+ uplevel 1 [list error_generator $type]
+ } \
+ eval {
+ eval [list error_generator $type]
+ } \
+ evalstr {
+ eval error_generator $type
+ } \
+ default {
+ puts "Unknown method=$method"
+ }
+}