Eu criei várias classes Exception para minha biblioteca lançar as próprias exceptions. Mas eu estou usando outra biblioteca por baixo e ela dispara suas exceptions.
Como eu faço para minha bilbioteca lançar as minhas exceptions primeiro?
E você tem certeza que a exception que você está capturando é a mesma que está ali no stacktrace (confira se o pacote também está certo).
Pilantra
Essa linha 34 é da classe Teste, que tem um método main que chama um método e esse método lança a exception.
Eu conferi, inclusive (pra ficar mais estranho ainda), eu usei o Exception no try catch, ou seja, qualquer exception ele lança pro meu exception, e mesmo assim não funcionou.
Dei uma googlada e o esquema parece ser esse mesmo.
Alguma idéia?
Java_Boy
Manda o método inteiro que trata/lança essa exceção.
E essa ConnectionException está como?
Felagund
Essa exception não é uma RuntimeExcpetion lançada de uma Thread?
publicclassConnectionExceptionextendsException{privateStringerror;publicConnectionException(){super();error="Nao foi possivel conectar ao servidor";}publicConnectionException(Stringe){super(e);error=e;}publicStringgetError(){returnerror;}}
Felagund eu vasculhei o código da biblioteca, ele é um método syncronized. Acho que ele está sendo lançado por uma Thread :(
Será esse o problema?
rogelgarcia
[Removi o conteúdo pois peguei o bonde andando e falei coisa errada]
rogelgarcia
Posta essa classe SingleMakeCall
Pelo menos o método call
Pilantra
Olá. Segue o método call:
publicvoidcall()throwsCallException{finalAsteriskServerasteriskServer=getAsteriskServer();ApplicationVisitor<OriginateAction>visitor=newApplicationVisitor<OriginateAction>(){publicOriginateActionvisit(AnswerAppanswer){thrownewUnsupportedOperationException();}publicOriginateActionvisit(DialAppdial){OriginateActionaction=newOriginateAction();action.setChannel(dial.getProtocolo()+"/"+TelefoneUtils.cleanFormat(dial.getDestino()));if(dial.getPlayback()!=null){action.setApplication("Playback");action.setData(dial.getPlayback().getParametro());}action.setTimeout(30000L);action.setCallerId(dial.getCallerId());action.setExten(dial.getOrigem());returnaction;}publicOriginateActionvisit(HangupApphangup){thrownewUnsupportedOperationException();}publicOriginateActionvisit(PlaybackAppplayback){thrownewUnsupportedOperationException();}publicOriginateActionvisit(SystemAppsystem){thrownewUnsupportedOperationException();}};OriginateActionaction=application.accept(visitor);AsteriskChannelasteriskChannel=asteriskServer.originate(action);if(asteriskChannel.wasBusy()){thrownewCallException("Linha ocupada, tente novamente mais tarde!");}}
O servidor está desligado para dar erro de conexão mesmo.
Pilantra
Galera, descobri o problema. Tava na nossa cara hehe. O Exception estava sendo lançado pelo método call do SingleMakeCall. E eu estava colocando o try/catch forçado em outro lugar, na classe que faz a conexão. Por isso não estava indo. Segue o stack corretissimo: