Thursday 14 December 2017

Gethrforexception ioexception em java


Existe alguma maneira de diferenciar programaticamente o que causou uma IOException. Por exemplo, o java lançará uma IOException, se houvesse um erro durante a escrita. Como posso dizer, se é algo como violação de acesso, se o disco estiver fora do espaço livre, se alguém desconectou a unidade de rede ou outras coisas. Eu realmente não posso analisar a Mensagem, pois não parece haver nenhum formato de mensagem padronizado, o Sun (ou oracle, agora acho) não parece ter nenhum tipo de formato padronizado. Qualquer sugestão (eu sou muito novo para o Java, não é o meu idioma normal, mas eu preciso usá-lo para corrigir um sistema muito quebrado no trabalho.) Perguntou 29 de julho 10 às 15:29 Obtendo o controle das exceções, a classe exata dará Você é uma das poucas possíveis subclasses da IOException, e estas são bastante padronizadas. Você pode testar classes com instanceof ou (uma abordagem bruta) comparar strings retornados de getClass (). GetName (). Há algumas soluções alternativas para as outras coisas que você pode fazer um File. canWrite () em um arquivo que você está prestes a abrir para a escrita (bem, seu programa deveria ter feito isso de qualquer maneira, se o nome andor diretório pode variar) e se houver um Talvez você estivesse sem espaço de arquivo, você poderia tentar escrever um pequeno arquivo para uma boa localização conhecida e ver se isso explode em você. Não muito elegante, eu sei: Java não é realmente conhecido como uma linguagem de programação de sistemas. Por outro lado, muitas vezes saber uma causa detalhada para uma exceção não ajuda muito: com ou sem o conhecimento, seu usuário simplesmente não pode conseguir o programa para fazer o que é necessário. Respondeu 29 de julho 10 às 15:48 Um possível adendo ao seu primeiro parágrafo - geralmente você está atrapalhando essas exceções, então uma alternativa mais agradável é ter blocos de captura separados para FileNotFoundException. UnknownHostException. Etc. Evita testes de citação e permite manipular casos especiais em blocos diferentes desde o início (sem impedir um bloqueio de capturas (IOException e) no fim). Ndash Andrzej Doyle Jul 29 10 às 16:07 Ahdrzej: Você está muito certo. Eu estava pensando em correções de banda para codificação pré-existente e assumindo que o uberjumper não queria reorganizar as hierarquias de captura existentes (o que for que exista). Mas se quotdoing rightquot é uma opção, então o seu caminho seria. Ndash Carl Smotricz 29 de julho 10 em 16: 13Constrói uma IOException com null como mensagem de erro detalhada. IOException Constrói uma IOException com a mensagem detalhada especificada. Parâmetros: mensagem - A mensagem detalhada (que é guardada para posterior recuperação pelo método Throwable. getMessage ()) IOException Constrói uma IOException com a mensagem detalhada especificada e causa. Observe que a mensagem detalhada associada à causa não é incorporada automaticamente nesta mensagem detalhada de exceções. Parâmetros: mensagem - A mensagem detalhada (que é guardada para recuperação posterior pelo método Throwable. getMessage ()) causa - A causa (que é guardada para posterior recuperação pelo método Throwable. getCause ()). (Um valor nulo é permitido e indica que a causa é inexistente ou desconhecida). Desde: 1.6 IOException Constrói uma IOException com a causa especificada e uma mensagem detalhada de (causenull. Null. Cause. toString ()) (que geralmente contém o Mensagem de causa de classe e detalhe). Esse construtor é útil para exceções de IO que são pouco mais do que wrappers para outros lançamentos. Parâmetros: cause - A causa (que é salva para recuperação posterior pelo método Throwable. getCause ()). (É permitido um valor nulo e indica que a causa é inexistente ou desconhecida). Desde: 1.6 Enviar um erro ou recurso Para obter mais informações sobre a API e a documentação do desenvolvedor, consulte a Documentação do Java SE. Essa documentação contém descrições detalhadas, desenvolvidas por desenvolvedores, com visões gerais conceituais, definições de termos, soluções alternativas e exemplos de código de trabalho. Copyright x00a9 1993, 2017, Oracle e suas afiliadas. Todos os direitos reservados. O uso está sujeito aos termos de licença. Veja também a política de redistribuição de documentação . Scripting nesta página rastreia o tráfego da página web, mas não altera o conteúdo de forma alguma.

No comments:

Post a Comment