My paragraph after that was ~= I don't understand the need to do anything with a exn:fail:contract except show the user and exit.
IIUC that's already the default behavior for non-GUI Racket apps, when some code is being hopeless. 1. Some other codes notices and raises exn:fail:contract. 2. The uncaught exception handler displays the details. 3. The app exits -- before it can do any more harm. Can we agree that 2 and 3 is the best (or anyway least-worst) thing to do? That normally, no good step 4 exists? If not: No worries, I won't try to convince you here. If so: There might be conditions where 2 and 3 aren't happening at all, or well-enough. We could dig into that. (Maybe there aren't enough details for a good "crash report". Maybe a handler somewhere is eating exns. Maybe a GUI app, when run outside DrRacket, the user doesn't necessarily see the message (??). And so on.) On Mon, Mar 25, 2019 at 12:00 PM James Platt <[email protected]> wrote: > > > On Mar 23, 2019, at 5:49 PM, Greg Hendershott wrote: > > > But -- contract violations aren't like that. They're about some code > > surprising some other code. I think the only hope here is, run the > > code enough (before the user ever does) to flush out the bad code > > assumptions and fix them. Realistically that means having enough > > automated tests, and running them frequently enough (like on every > > code commit, or at least push, and you can't merge to master if tests > > don't pass, etc.). > > Yes, but contract violations are also, by definition, problems that have been > anticipated. You may not know why a function is, for example, being passed a > specific parameter that is the wrong data type or is empty when you said it > should be non-empty but you do know that that is what happened. It's enough > to go on for an error message. My hope was that contracts would provide a > more granular set of predicates to test for each of the possible violations. > > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

