Вы можете создать макрос, который будет оборачивать вызовы функций в блок try-catch, который будет перехватывать исключения такого рода.
Например, что-то вроде
(with-default-method [fxn args default] ...)
расширилось бы до
(try (fxn args) (catch java.lang.IllegalArgumentException _) (finally default))
Вышеизложенное в основном махает рукой, потому что я не думаю, что это хорошая идеявообще: это злоупотребление системой исключений, и я думаю, что это будет делать неожиданные вещи.
Я не Ruby, но у меня такое ощущение, что эта функция встроена в этот язык;в java, и из-за расширения clojure, вам придется попробовать это, и это не будет красиво.