Sure would .. I've come to like the shorter format whether right or wrong. I see you've removed the type test .. that will not work.
Try something like:
(if (setq a
(vl-catch-all-error-p (vl-catch-all-apply 'vla-get-area (list (vlax-ename->vla-object ent))))
)
(setq bad (cons ent bad))
(setq area (+ area a)
good (cons ent good)
)
)
Create a self intersecting area then hatch by object to test: