In the libphonenumber library, the PhoneNumberUtil.parse
function throws a NumberParseException
. I'd like to handle this exception gracefully.
I'm running the following one-off script (invoked with java -cp path/to/clojure.jar:path/to/libphonenumber.jar clojure.main -i scratch.clj
):
开发者_C百科(import '(com.google.i18n.phonenumbers PhoneNumberUtil))
(defn parse-phone-no
"Convert the phone number to standard form, using the libphonenumber class.
Arguments:
raw-phone-no - the phone number to convert
Returns:
the canonical version of the phone number, or nil if the phone number was
invalid."
[raw-phone-no]
(do
(def phone-util (PhoneNumberUtil/getInstance))
(try
(do
(def us-number (.parse phone-util raw-phone-no "US"))
(.getNationalNumber us-number))
(catch NumberParseException e
nil))))
(println (parse-phone-no "5"))
If I run it with a generic catch Exception
then it works fine, however any combination of catch NumberParseException
, catch PhoneNumberUtil/NumberParseException
, and catch (.NumberParseException phoneUtil)
gives a Unable to resolve classname
error. I'd like to catch the custom exception and let others slide, so I'd appreciate your help.
Thanks, Kevin
Just like PhoneNumberUtil
, You need to either import
the NumberParseException
to the namespace or provide its full qualified package in the catch expression.
If the exception is an inner class, that translates in clojure to OuterClass$InnerClass (which you still need to either import or qualify with its package).
精彩评论