Fordeler med unntak i Java programmeringsspråk
Et unntak er en hendelse som oppstår under utførelse av et program, som forstyrrer den normale programmets instruksjoner. Fordel 1: Deler Feil-håndtering Koden fra "vanlige" CodeUnntak gi midlene til å skille detaljer om hva de skal gjøre når noe utenom det vanlige som skjer fra de viktigste logikken i et program. I tradisjonell programmering, feildeteksjon, rapportering og håndtering ofte føre til forvirrende spaghetti koden. For eksempel vurdere pseudocode metoden her som leser en hel fil i minnet: readFile ( Ved første øyekast virker denne funksjonen enkelt nok, men det ignorerer alle følgende mulige feil: • Hva skjer hvis filen ikke kan åpnes? • Hva skjer hvis lengden av filen ikke kan bestemmes? • Hva skjer hvis nok minne ikke kan tildeles? • Hva skjer hvis de leser mislykkes? • Hva skjer hvis filen ikke kan lukkes? For å håndtere slike tilfeller må readFile funksjonen har mer koden for å gjøre feil oppdaging, rapportering og håndtering. Her er et eksempel på hva den funksjonen kan se slik ut: errorCodeType readFile ( åpne filen; Det er så mye feildeteksjon, rapportering og tilbake her at de opprinnelige syv linjer med kode er tapt i rotet. Verre ennå, har den logiske flyten av koden også gått tapt, og dermed gjør det vanskelig å si om koden er å gjøre det riktige: Er filen virkelig blir stengt hvis funksjonen ikke klarer å allokere nok minne? Det er enda vanskeligere å sikre at koden fortsetter å gjøre det rette når du endrer metoden tre måneder etter å skrive den. Mange programmerere løse dette problemet ved å ignorere iterrors rapporteres når deres programmer krasjer. Unntak kan du skrive de viktigste flyt av koden din, og for å håndtere de spesielle tilfeller andre steder. Hvis readFile funksjonen brukes unntak i stedet for tradisjonelle feil-ledelsen teknikker, ville det ser mer ut som følgende: readFile ( Merk at unntak ikke spare deg for krefter på å gjøre arbeidet med å oppdage, rapportering og håndtering av feil, men de hjelper deg å organisere arbeidet mer effektivt. Fordel 2: spre Feil Up the Call StackEn annen fordel med unntak er evnen til å forplante feilrapportering opp kallstakken metoder. Anta at readFile metoden er den fjerde metoden i en serie av nøstede metodekall laget av hovedprogrammet: method1 samtaler method2, som kaller method3, som til slutt ringe readFile: method1 ( method2 ( method3 ( Anta også at method1 er den eneste metoden interessert i feil som kan oppstå innenfor readFile. tradisjonelle feil-varsel teknikker kraft method2 og method3 å utbre den feilkoder returneres av readFile opp kallstakken til feilkodene endelig komme method1the eneste metoden som er interessert i dem: method1 ( errorCodeType method2 ( errorCodeType method3 ( Husk at Java Runtime Environment søker bakover gjennom kallstakken å finne metoder som er interessert i å håndtere en bestemt unntak. En metode kan anda eventuelle unntak kastet i det, og dermed gir en metode lenger opp kallstakken å fange den. Derfor, bare metodene som bryr seg om feil trenger å bekymre deg oppdage feil: method1 ( method2 throws Exception ( method3 throws Exception ( Imidlertid, ettersom pseudocode viser, ducking et unntak krever litt innsats på den delen av mellommann metoder. Eventuelle sjekket unntak som kan bli kastet i en metode må angis i kast klausul. Fordel 3: Gruppering og Skille feiltyperFordi alle unntak kastet i et program er objekter, den gruppering eller kategorisere unntak er et naturlig utfall av klassen hierarkiet. Et eksempel på en gruppe relatert Unntak klasser i Java-plattformen er de som er definert i java.ioIOException og dens etterkommere. IOException er den mest generelle og representerer en type feil som kan oppstå ved utføring av I / O. Dens etterkommere representerer mer spesifikke feil. For eksempel betyr FileNotFoundException at en fil ikke kunne bli plassert på disken. En metode kan skrive spesifikke behandlingsprogrammer som kan håndtere et svært spesifikt unntak. Det FileNotFoundException klassen har ingen etterkommere, slik følgende handler kan håndtere bare én type unntak: catch (FileNotFoundException e) ( En metode kan fange et unntak basert på sin gruppe eller generell type ved å angi noen av unntaket er superclasses i fangsten setningen. For eksempel å fange alle I / O unntak, uavhengig av deres spesifikke typen, et unntak handler angir en IOException argument: catch (IOException e) ( Dette handler vil være i stand til å fange alle I / O unntak, blant annet FileNotFoundException, EOFException, og så videre. Du kan finne detaljer om hva som skjedde ved spørring mot argument for unntak handler. For eksempel bruke følgende for å skrive ut stabel spor: catch (IOException e) ( Du kan selv sette opp et unntak handler som håndterer noe unntak med de handler her: catch (Exception e) (/ / A (altfor) generelle unntak handler Unntaket klassen er nær toppen av THRowable klassen hierarkiet. Derfor vil dette handler fange mange andre unntak i tillegg til de som handler er ment å fange. Du ønsker kanskje å håndtere unntak denne måten hvis alt du vil at programmet skal gjøre, for eksempel skrive ut en feilmelding til brukeren, og deretter avslutte. I de fleste situasjoner, men ønsker unntak handlers å være så konkrete som mulig. Årsaken er at det første et behandlingsprogram må gjøre er å bestemme hva slags unntak skjedde før det kan bestemme den beste utvinningsstrategi. I praksis, ved ikke å fange spesifikke feil, må det handler imøtekomme enhver mulighet. Unntak handlers som er for generelle kan gjøre koden mer utsatt for feil ved fangst og håndtering unntak som ikke var forventet av programmerer og som handler ikke var ment. Som nevnt kan du lage grupper av unntak og håndtere unntakene i en generell måte, eller du kan bruke spesielle unntaket typen til å skille unntak og håndtere unntakene på en nøyaktig måte. en artikkel presentert av Clain Brand
|
|||||
|