Hoe te schrijven van mijn eigen uitzonderingshandler in Java

Hoe te schrijven van mijn eigen uitzonderingshandler in Java


De Java-taal biedt de uitzondering model zodat ontwikkelaars kunnen omgaan met situaties waarin normale programmauitvoering misgaat. Er zijn vele manieren waarop die een programma kan een onverwachte wending nemen, maar een paar algemene soorten activiteit zijn gevoelig voor deze situaties, zoals input / output, verwerking met arrays en sommige rekenkundige berekeningen. Na een inzicht over het omgaan met uitzonderingen in uw Java-programma's is een van de belangrijkste vaardigheden die betrokken zijn bij steeds een ontwikkelaar.

Instructies

1

Maak uw Java-programma, met behulp van het volgende overzicht uw klasse als belangrijkste methode:

importeren van java.io.*;

openbare klasse ExceptionDemo {}

openbare statische nietige leiding (koord [] args) {}

FileWriter fileOut = nieuwe FileWriter("outputfile.txt");

PrintWriter afdruk = nieuwe PrintWriter(fileOut);

printOut.println ("tekst wordt uitgeprint naar bestand");

printOut.close();

fileOut.close();

}}

Als u plak deze code in een IDE (Integrated Development Environment) die code fouten markeert, ziet u dat het zal zelfs niet kunnen compileren omdat er een "niet-afgehandelde uitzondering." De constructormethode FileWriter kunt werpen een uitzondering, voor bijvoorbeeld als het bestand dat u hebt opgegeven, kan niet worden gevonden.

2

Plaats de code met de niet-afgehandelde uitzondering in een blok "try" als volgt:

Probeer {}

FileWriter fileOut = nieuwe FileWriter("outputfile.txt");

PrintWriter afdruk = nieuwe PrintWriter(fileOut);

printOut.println ("tekst wordt uitgeprint naar bestand");

printOut.close();

fileOut.close();

}

Dit moet voorkomen dat de compiler klagen over de regels die niet-verwerkte uitzonderingsfouten werden veroorzaakt, maar een nieuw soort fout zal maken, omdat de verklaring van de "try" nog niet voltooid is. De verklaring van de "try" is in feite een container voor code die een uitzondering kan gooien, maar je nog steeds staat wat er gebeuren moet als een uitzondering is in feite gegooid.

3

Een "catch"-instructie als volgt (na de sluiting "proberen" beugel):

vangst (IOException ioe) {}

System.err.println ("IOException opgetreden:" + ioe.getMessage());

}

Dit moet genoeg de compiler om tevreden te houden, en zal u toelaten om uw programma. Helemaal heb je verricht is echter verhinderen dat het programma crasht als een uitzondering op dit punt is gegooid. Afhankelijk van de details van uw aanvraag, kan u wilt invoegen van andere code hier om weer te geven wat er in uw "proberen" te blokkeren, als die code zal niet hebben uitgevoerd. Zodra de uitzondering is gegooid, springt de uitvoering rechtstreeks naar de "vangst" code.

4

Voeg extra uitzondering-handlers toe. Afhankelijk van de aard van het programma, is het wellicht raadzaam verschillende code voor specifieke soorten uitzondering op te nemen. Bijvoorbeeld, voordat de "IOException" handler kon u opnemen:

vangst (FileNotFoundException fnfe) {}

System.err.println ("FileNotFoundException opgetreden:" + fnfe.getMessage());

}

Dit is een meer specifieke soort fout dan de IOException, zodat als de uitzondering gegooid niet een FileNotFoundException is, uw code in plaats daarvan aan de meer algemene IOException handler zal springen. Chaining van uw handlers van de uitzondering op deze manier kunt u bepalen wat er precies moet gebeuren voor elk type fout.

Tips & waarschuwingen

  • U kunt optioneel een clausule "eindelijk" toevoegen na elk van uw verklaringen "vangen" dicteren wat er zal gebeuren wanneer het blok "proberen" is afgelopen, of een uitzondering krijgt gegooid of niet.
  • Input / Output uitzonderingen worden gecontroleerd, dat is waarom programma's niet kunnen compileren totdat ze zijn verwerkt. Er zijn echter enkele uitzonderingen 'uitgeschakeld,"wat betekent dat u meer kans op ontmoeting hen als u fouten opspoort.