Index: stxcase.ss
===================================================================
--- stxcase.ss	(revision 18484)
+++ stxcase.ss	(working copy)
@@ -269,12 +269,13 @@
 	 (stx->list kws))
 	(for-each
 	 (lambda (clause)
-	   (unless (and (stx-list? clause)
-			(<= 2 (length (stx->list clause)) 3))
-	     (raise-syntax-error
-	      (syntax-e who)
-	      "bad clause"
-	      clause)))
+       (-define (fail message)
+         (raise-syntax-error (syntax-e who) message clause))
+       (cond
+         [(not (stx-list? clause))
+          (fail "expected a list of clauses")]
+         [(not (<= 2 (length (stx->list clause)) 3))
+          (fail "expected 2 or 3 expressions in a clause")]))
 	 clauses)
 	(let ([patterns (map stx-car clauses)]
 	      [fenders (map (lambda (clause)
@@ -317,7 +318,7 @@
 		       (list
 			(quote-syntax raise-syntax-error)
 			#f
-			"bad syntax"
+			"syntax-case was unable to match any patterns"
 			arg)]
 		      [else
 		       (let ([rest (loop (cdr patterns) (cdr fenders)
