Diferenças nas exception

16 respostas
programaçãojava
G

Boa tarde,

Estou com um problema, quando rodo meu programa pelo debug ele esta pegando uma exception geral e quando rodo com o executavel ele pega uma exception especifica o problema é que preciso gravar numa tabela de erro a mensagem especifica não a generica alguem já passou por isso

16 Respostas

V

Eu tive este problema mas não foi eu quem resolvi, a pessoa que resolveu para mim alterou o escopo do tratamento de exceção, no meu caso ele acrescentou o throws ao método

private void geraRelatorio(boolean pdf, String filePath) throws JRException, URISyntaxException, Exception {.... (continua)
(e na chamada)

try {

geraRelatorio(pdf, filePath);

JOptionPane.showMessageDialog(this, Relatório salvo com sucesso, Info, JOptionPane.INFORMATION_MESSAGE);

} catch (Exception ex) {

ex.printStackTrace();

JOptionPane.showMessageDialog(this, Houve um problema na escrita do arquivo, por favor verifique se este

+ arquivo não está sendo utilizado por outra aplicação., Erro, JOptionPane.ERROR_MESSAGE);
}
G

fiz o throws e não funcionou valeu

S

Que exception acontece pelo debug?
Que exception acontece quando roda por fora?
Cadê o seu código?

G
private boolean CreateSectionsNoChained(Integer idAmend) throws SicsFaultDetails, Exception
…

…

…

…

if(!errorSection)

{

try

{

this.GenerateAutoProtectionCommitNoChained();
dao.ChangeStatus(this.thName, item.getItem(), STATUS.PROCESSED);

                }
                catch(SicsFaultDetails ex) //Está exception vem quando debugo
                {
                    this.STEP.Warning(new LegatusException(IADM_TABLES.DSG, this.Dsg.getObjectId(), ex.getExplanation()));
                    Util.Log("Thread = " + this.thName, TYPE_MESSAGE.WARNING, "Apólice não protegida: " + this.Dsg.getObjectId() + "_" + ex.getExplanation());
                    
                    ALL_SECTIONS_OK = false;
                    
                    return false;
                }
                catch(Exception ex) //Esta exception vem no executavel
                {
                    String msg = "The Main Limit of section " + item.getItem().getItemId() + "." + item.getGroupCode() + " is exceeding the program limit.";  
                                           
                    this.STEP.Warning(new LegatusException(IADM_TABLES.DSG, this.Dsg.getObjectId(), ex.getMessage));
                   
                    
                    Util.Log("Thread = " + this.thName, TYPE_MESSAGE.ERROR, "Apólice não protegida: " + item.getFkDsgIte() + "_" + ex.getMessage());

obrigado

ALL_SECTIONS_OK = false;
                  
                }
            }
S

Pôe um printStackTrace pra gente ter detalhes do que está acontecendo.

G

coloco o printStackTrace nas duas exceptions?

G

Fiz o Debug com o printStackTrace e passou pela exception (SicsFaultDetails ex) e aparece a informação

S

Esqueceu de postar o que o printStackTrace() mostrou.

G

esta no print que mande

S

Não, no seu print está a tela de debug da sua IDE.
Um StackTrace é um texto contendo toda a pilha de chamada até o momento em que a exceção foi lançada.

D

Para usar o printStackTrace basta colocar dentro do catch:

ex.printStackTrace();

Ao executar, vai aparecer uma “lista” de erros se ocorrer naquele trecho de código.

No try/catch tem os filtros de exceções são SicsFaultDetails e Exception, se uma exceção for diferente de SicsFaultDetails, será tratada no filtro Exception.

Se não está sendo tratada na SicsFaultDetails mas está na Exception, então não é uma exceção SicsFaultDetails e pode ser uma outra exceção que vc desconheça.

Somente chamando o printStackTrace é possível identificar o que está acontecendo.

G
SICS0007 - SICS Message

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at java.lang.Class.newInstance0(Class.java:357)

at java.lang.Class.newInstance(Class.java:310)

at org.apache.axis.encoding.ser.BeanDeserializer.(BeanDeserializer.java:104)

at org.apache.axis.encoding.ser.BeanDeserializer.(BeanDeserializer.java:90)

at com.SicsNt.www.SystemTypes.SicsFaultDetails.getDeserializer(Unknown Source)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)

at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)

at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)

at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)

at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)

at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2756)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)

at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)

at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)

at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)

at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)

at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796)

at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)

at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)

at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)

at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)

at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)

at org.apache.axis.client.Call.invokeEngine(Call.java:2784)

at org.apache.axis.client.Call.invoke(Call.java:2767)

at org.apache.axis.client.Call.invoke(Call.java:2443)

at org.apache.axis.client.Call.invoke(Call.java:2366)

at org.apache.axis.client.Call.invoke(Call.java:1812)

at com.SicsWsBusinessEntryPoint.www.SicsWsBusinessEntryPoint_interface.SicsWsBusinessEntryPointBindingStub.generateAutoProtectionCommit(Unknown Source)

at com.csc.LegatusBR.xml.sics.SicsPC_Policy.GenerateAutoProtectionCommitNoChained(SicsPC_Policy.java:640)

at com.csc.LegatusBR.xml.sics.SicsPC_Policy.CreateSectionsNoChained(SicsPC_Policy.java:717)

at com.csc.LegatusBR.xml.sics.SicsPC_Policy.StartCededDsg(SicsPC_Policy.java:207)

at com.csc.LegatusBR.entities.ThProcessIn.run(ThProcessIn.java:253)
G

nesse caso deu certo pegou a mensagem que eu preciso, o problema é quando gero o .jar que ai nao tenho como debugar porque nao passa pelo SicsFaultDetails e vai direto para a Exception

G

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString: SICS0007 - SICS Message --> Essa mesagem vem quando executo o .jar
faultActor:
faultNode:
faultDetail:
{http://www.SicsNt.com/SystemTypes}FaultDetails:
date xsi:type=“xsd:date”>2018-03-20
time xsi:type=“xsd:time”>16:34:48 time>
xpath>/generateAutoProtectionInput /xpath>
explanation>The Main Limit of section 1.1.1036.01 is exceeding the program limit of BRL. --> essa mensagem vem no debug
explanation>

D

Insira no catch:

PrintStream out = new PrintStream("LOG.TXT", "UTF-8");
out.print(ex.getMessage());
out.close();

Isso deve criar um arquivo com o StackTrace

Sobre o Server.generalException, é outra exceção, portanto será tratado no Exception

G

Galera obrigado pelas suas dicas, descobri que o problema não é quando debugo e o execuavel o problema é que no debug estou usando o tomcat como web service e o no cliente faz por websphere, agora não sei se será alguma configuração que tem que setar lá

Criado 2 de março de 2018
Ultima resposta 28 de mar. de 2018
Respostas 16
Participantes 4