* [Caml-list] exception handling questions @ 2003-11-06 8:38 Dustin Sallings 2003-11-06 9:02 ` Richard Jones 2003-11-06 9:47 ` Oleg Trott 0 siblings, 2 replies; 8+ messages in thread From: Dustin Sallings @ 2003-11-06 8:38 UTC (permalink / raw) To: Caml Mailing List One thing that really seems to be missing from exception handling is the ability to print a stack trace from an exception. I realize there's a flag on the ocamlrun to print stacks for uncaught exceptions, but that's not exactly what I'm looking for. I'd like to be able to catch and exception, log it, and continue. Similarly, is there a way to print an exception at least like the toplevel does? I can catch any type of exception with the appropriate pattern, but I don't see how I can report it without expecting it. -- Dustin Sallings ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Caml-list] exception handling questions 2003-11-06 8:38 [Caml-list] exception handling questions Dustin Sallings @ 2003-11-06 9:02 ` Richard Jones 2003-11-06 9:50 ` Dustin Sallings 2003-11-06 9:47 ` Oleg Trott 1 sibling, 1 reply; 8+ messages in thread From: Richard Jones @ 2003-11-06 9:02 UTC (permalink / raw) Cc: Caml Mailing List On Thu, Nov 06, 2003 at 12:38:27AM -0800, Dustin Sallings wrote: > > One thing that really seems to be missing from exception handling is > the ability to print a stack trace from an exception. I realize > there's a flag on the ocamlrun to print stacks for uncaught exceptions, > but that's not exactly what I'm looking for. I'd like to be able to > catch and exception, log it, and continue. > > Similarly, is there a way to print an exception at least like the > toplevel does? I can catch any type of exception with the appropriate > pattern, but I don't see how I can report it without expecting it. And while we're at it, printing out a full stack trace with function names and parameters. Rich. -- Richard Jones. http://www.annexia.org/ http://freshmeat.net/users/rwmj Merjis Ltd. http://www.merjis.com/ - improving website return on investment "I wish more software used text based configuration files!" -- A Windows NT user, quoted on Slashdot. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Caml-list] exception handling questions 2003-11-06 9:02 ` Richard Jones @ 2003-11-06 9:50 ` Dustin Sallings 2003-11-06 9:56 ` Richard Jones 2004-01-31 1:02 ` Eric Stokes 0 siblings, 2 replies; 8+ messages in thread From: Dustin Sallings @ 2003-11-06 9:50 UTC (permalink / raw) To: Richard Jones; +Cc: Caml Mailing List On Nov 6, 2003, at 1:02, Richard Jones wrote: >> One thing that really seems to be missing from exception handling is >> the ability to print a stack trace from an exception. I realize >> there's a flag on the ocamlrun to print stacks for uncaught >> exceptions, >> but that's not exactly what I'm looking for. I'd like to be able to >> catch and exception, log it, and continue. >> >> Similarly, is there a way to print an exception at least like the >> toplevel does? I can catch any type of exception with the appropriate >> pattern, but I don't see how I can report it without expecting it. > > And while we're at it, printing out a full stack trace with function > names and parameters. Yes, that would be nice, but I'm trying to not ask for too much. :) As it is, I've got a function that can fail when processing large amounts of data and it's OK to lose one as long as I know why. Right now, the only way to know why is to rethrow: let should_process fn = try (ends_with fn ".") && (is_new_enough fn) && (not (is_gzip fn)) with x -> print_endline("Unknown error determining whether to process " ^ fn); raise x ;; Example output: Unknown error determining whether to process /tmp/x/passwd. Fatal error: exception Sys_error("/tmp/x/passwd.: Permission denied") I'd be plenty happy to print out that message and continue, but in the meantime, I've gotta have it abort. -- Dustin Sallings ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Caml-list] exception handling questions 2003-11-06 9:50 ` Dustin Sallings @ 2003-11-06 9:56 ` Richard Jones 2004-01-31 1:02 ` Eric Stokes 1 sibling, 0 replies; 8+ messages in thread From: Richard Jones @ 2003-11-06 9:56 UTC (permalink / raw) To: caml-list On Thu, Nov 06, 2003 at 01:50:30AM -0800, Dustin Sallings wrote: > Unknown error determining whether to process /tmp/x/passwd. > Fatal error: exception Sys_error("/tmp/x/passwd.: Permission denied") > > I'd be plenty happy to print out that message and continue, but in > the meantime, I've gotta have it abort. You might want to have a look at the code in lablgtk2 (the latest released version). The user exception handler manages to print out exceptions in full somehow. I'm not sure how it does it - perhaps it uses a C function? Anyway, worth a look. Rich. -- Richard Jones. http://www.annexia.org/ http://freshmeat.net/users/rwmj Merjis Ltd. http://www.merjis.com/ - improving website return on investment MONOLITH is an advanced framework for writing web applications in C, easier than using Perl & Java, much faster and smaller, reusable widget-based arch, database-backed, discussion, chat, calendaring: http://www.annexia.org/freeware/monolith/ ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Caml-list] exception handling questions 2003-11-06 9:50 ` Dustin Sallings 2003-11-06 9:56 ` Richard Jones @ 2004-01-31 1:02 ` Eric Stokes 2004-01-31 1:50 ` Dustin Sallings 1 sibling, 1 reply; 8+ messages in thread From: Eric Stokes @ 2004-01-31 1:02 UTC (permalink / raw) To: Dustin Sallings; +Cc: Richard Jones, Caml Mailing List On Nov 6, 2003, at 1:50 AM, Dustin Sallings wrote: > > On Nov 6, 2003, at 1:02, Richard Jones wrote: > >>> One thing that really seems to be missing from exception handling is >>> the ability to print a stack trace from an exception. I realize >>> there's a flag on the ocamlrun to print stacks for uncaught >>> exceptions, >>> but that's not exactly what I'm looking for. I'd like to be able to >>> catch and exception, log it, and continue. >>> >>> Similarly, is there a way to print an exception at least like the >>> toplevel does? I can catch any type of exception with the >>> appropriate >>> pattern, but I don't see how I can report it without expecting it. >> >> And while we're at it, printing out a full stack trace with function >> names and parameters. > > Yes, that would be nice, but I'm trying to not ask for too much. :) > As it is, I've got a function that can fail when processing large > amounts of data and it's OK to lose one as long as I know why. Right > now, the only way to know why is to rethrow: > > let should_process fn = > try > (ends_with fn ".") && (is_new_enough fn) && (not (is_gzip fn)) > with x -> > print_endline("Unknown error determining whether to process " > ^ fn); > raise x > ;; > What about doing this. let rec should_process fn = try (ends_with fn ".") && (is_new_enough fn) && (not (is_gzip fn)) with x -> print_endline("Unknown error determining whether to process " ^ fn); should_process fn ;; You may need to maintain a bit more state in various places, but it could work the way you want. > Example output: > > Unknown error determining whether to process /tmp/x/passwd. > Fatal error: exception Sys_error("/tmp/x/passwd.: Permission denied") > > I'd be plenty happy to print out that message and continue, but in > the meantime, I've gotta have it abort. > > -- > Dustin Sallings > > ------------------- > To unsubscribe, mail caml-list-request@inria.fr Archives: > http://caml.inria.fr > Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: > http://caml.inria.fr/FAQ/ > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Caml-list] exception handling questions 2004-01-31 1:02 ` Eric Stokes @ 2004-01-31 1:50 ` Dustin Sallings 0 siblings, 0 replies; 8+ messages in thread From: Dustin Sallings @ 2004-01-31 1:50 UTC (permalink / raw) To: Eric Stokes; +Cc: Caml List On Jan 30, 2004, at 17:02, Eric Stokes wrote: > What about doing this. > > let rec should_process fn = > try > (ends_with fn ".") && (is_new_enough fn) && (not (is_gzip fn)) > with x -> > print_endline("Unknown error determining whether to process " > ^ fn); > should_process fn > ;; > > You may need to maintain a bit more state in various places, but it > could work > the way you want. fn is a string, so feeding the same value back in wouldn't help. The real problem here was a runtime failure in one of the functions that is very unlikely to occur where this program is actually deployed. I just wanted to make sure that when a failure did occur, it was dealt with properly. The ``unknown error'' part was my biggest concern, because I really didn't have a way to know what went wrong. The answer to my main concern was the Printexc module: let should_process fn = try (ends_with fn ".") && (is_new_enough fn) && (not (is_gzip fn)) with x -> print_endline("Unknown error determining whether to process " ^ fn); print_endline (Printexc.to_string x); false -- Dustin Sallings ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Caml-list] exception handling questions 2003-11-06 8:38 [Caml-list] exception handling questions Dustin Sallings 2003-11-06 9:02 ` Richard Jones @ 2003-11-06 9:47 ` Oleg Trott 2003-11-06 10:39 ` Dustin Sallings 1 sibling, 1 reply; 8+ messages in thread From: Oleg Trott @ 2003-11-06 9:47 UTC (permalink / raw) To: Dustin Sallings, Caml Mailing List On Thursday 06 November 2003 03:38 am, Dustin Sallings wrote: > Similarly, is there a way to print an exception at least like the > toplevel does? I can catch any type of exception with the appropriate > pattern, but I don't see how I can report it without expecting it. Printexc.to_string : exn -> string -- Oleg Trott <oleg_trott@columbia.edu> ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Caml-list] exception handling questions 2003-11-06 9:47 ` Oleg Trott @ 2003-11-06 10:39 ` Dustin Sallings 0 siblings, 0 replies; 8+ messages in thread From: Dustin Sallings @ 2003-11-06 10:39 UTC (permalink / raw) To: Oleg Trott; +Cc: Caml Mailing List On Nov 6, 2003, at 1:47, Oleg Trott wrote: > On Thursday 06 November 2003 03:38 am, Dustin Sallings wrote: >> Similarly, is there a way to print an exception at least like >> the >> toplevel does? I can catch any type of exception with the appropriate >> pattern, but I don't see how I can report it without expecting it. > > Printexc.to_string : exn -> string Thanks, that's exactly what I was looking for, yet somehow unable to see even though it's right there in the docs. -- Dustin Sallings ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2004-01-31 1:53 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-11-06 8:38 [Caml-list] exception handling questions Dustin Sallings 2003-11-06 9:02 ` Richard Jones 2003-11-06 9:50 ` Dustin Sallings 2003-11-06 9:56 ` Richard Jones 2004-01-31 1:02 ` Eric Stokes 2004-01-31 1:50 ` Dustin Sallings 2003-11-06 9:47 ` Oleg Trott 2003-11-06 10:39 ` Dustin Sallings
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox