It does print something more useful in acl 5.0 (not yet released):
user(1): (defstruct (zzz (:conc-name nil)
(:print-function print-zzz))
(anything 23))
zzz
user(2): (defun print-zzz (obj stream level)
(write-string "[ " stream)
;; next-lines to deliberatley throw an error
(let ((element (car t)))
(write element :stream stream))
(write-string " ]" stream))
print-zzz
user(3): (setq test (make-zzz))
[ #<Printer Error, obj=#x20815242: Attempt to take the car of t which is not listp.>
user(4):