java - Handling API that throws two Exceptions with the same method, but without common interface -
i've been trying write logic regarding exception handling evernote java api
. stumbled upon weird situation. there 2 exceptions - edamsystemexception
, edamuserexception
(documentation link)
both of exceptions have method edamerrorcode geterrorcode()
lack common interface method.
i feels flaw in api design, since state of codes make sense edamsystemexception
, others edamuserexceptions
since not state edamerrorcode
bounds exception, , shielding myself situation of codes use in both of exception types wanted write try-catch
block:
try { clientfactory.createnotestoreclient(); } catch (edamsystemexception | edamuserexception ex) { switch (ex.geterrorcode()) { case invalid_auth: case bad_data_format: .. case auth_expired: ... case rate_limit_reached: ... default: ... } } catch (texception ex) { ... }
but (obviously) cannot call ex.geterrorcode()
. instance checking (instanceof
+ cast), seems not elegant.
i trying think generic solution problem, lack of common ancestor prevents me using bounded generic.
creating wrapper class 2 constructors , getmessage()
method still forces me instance checking.
am missing or there no way around , have checking anyway?
Comments
Post a Comment