[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] Coops print-object, error handling and flaming koalas
From: |
Stephen Eilert |
Subject: |
[Chicken-users] Coops print-object, error handling and flaming koalas |
Date: |
Thu, 22 Sep 2011 15:34:59 -0300 |
Today I hit a problem with some trivial code I wrote using Coops that I just couldn't figure out. The relevant code is here:
Yeah, I forgot to add the "port" argument. In any case, Coops' error message is misleading:
#<no print-method defined for: #<coops instance of `<color>'>>
There is a method alright, it's just crashing :)
Now, This is how coops handles the situation:
(define-record-printer (coops-instance obj out)
(handle-exceptions ex
(begin
(display "#<no print-method defined for: " out)
(default-print-method obj out)
(display ">" out))
(print-object obj out) ) )
It will display the same error message regardless of the condition. So let's modify it to see what it was:
(define-record-printer (coops-instance obj out)
(handle-exceptions ex
(begin
(display ((condition-property-accessor 'exn 'message)))
; (display "#<no print-method defined for: " out)
(default-print-method obj out)
(display ">" out))
(print-object obj out) ) )
The actual error is thus: #<Error in printer of record type `coops-instance': bad argument count - received 0 but expected 1>
which is an (exn arity), in my code.
As pointed out by sjaaman, it should only catch the dispatch error. I could create a patch to do that, but I am not confortable enough with coops' code at this point and I am sure the error handling could be improved in ways I can't even see yet..
Also, there are no flaming koalas.
-- Stephen
"Kids these days.
Whatever happened to hard work?
-- Joel Spolsky, The perils of javaschools"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Chicken-users] Coops print-object, error handling and flaming koalas,
Stephen Eilert <=