java - Catching UnknownHostException which is the cause of an exception -
in program of interest, during execution of method() http related exceptions can occur. due something, method set able throw expexception. interest in specific type of exception, i.e. unknownhostexception, can accessed using
if (e.getcause().getcause().getcause() instanceof unknownhostexception)
which hope agree nasty way. thus, works fine:
public class exportexception extends exception; class sth{ method() throws expexception; } class main{ try{ method() } catch(expexceptione e){ if (e.getcause().getcause().getcause() instanceof unknownhostexception){ dosthelse(); } }
however, hoping described below. unfortunately, eclipse yells
unreachable catch block unknownhostexception. exception never thrown try statement.
is there me? don't want use getcause()^3.
an addition: big big project , i'm new newbie , rather not mess outside classes, "main".
my program like:
public class exportexception extends exception; class sth{ method() throws expexception; } class main{ try{ method() } catch(unknownhostexception e){ dosth(); } catch(expexceptione){ dosthelse(); }
unknownhostexception subtype of ioexception checked exception.
method throws checked exceptions must declare them in throws
declaration.
consequently, when call method not have throws unknownhostexception
in declaration, never catch exception - code unreachable , compiler correct.
here can see how nicely check if exception cause contains specific exception.
static boolean hascause(throwable e, class<? extends throwable> cl) { return cl.isinstance(e) || e.getcause() != null && hascause(e.getcause(), cl); } catch(expexception e) { if (hascause(e, unknownhostexception.class)) { dosmth(); } else { dosmthelse(); } }
Comments
Post a Comment