Innholdsfortegnelse:
Video: Curso Java 09 - Bucles for anidados @JoseCodFacilito 2024
Feil i Java-programmer kan forekomme på ulike tidspunkter. Du kan imidlertid i stor grad klassifisere når det oppstår en feil i to kategorier, på kompileringstid og runtime, som beskrevet i de følgende avsnittene.
Kompilere tidsfeil
Kompilatoren konverterer programkoden til Java byte-kode. Under denne prosessen tar det den menneskelige lesbare koden du skriver og konverterer den til noe som Java Runtime Environment (JRE) forstår.
For å utføre denne prosessen må kompilatoren parse koden, noe som betyr at den leser koden på en måte som utvetydig bestemmer nøyaktig hva du vil at programmet skal gjøre når du vil ha det til å gjøre det, og hvordan du vil oppnå oppgaven. Hvis du bryter reglene for å skrive entydig kode, viser kompilatoren en feilmelding. Denne meldingen er egentlig en slags unntak.
Parsing betyr å lese innspillet du oppgir, for eksempel kode i menneskelig lesbar form, og slå den til noe annet, for eksempel Java byte-kode. En applikasjon kan også analysere brukerinngang. For eksempel kan en bruker skrive en streng som din søknadskode blir til et nummer.
Så, parsing er en handling å lese noen type innspill, tolke den innspillingen på en bestemt måte, og deretter produsere produksjon basert på den tolkede inngangen. En parser genererer en feil når inngangen ikke er hva den forventer.
For eksempel, hvis brukeren skriver inn en streng som inneholder bokstaven C, og du forventet en streng som inneholder et tall, for eksempel 123, vil parseren generere et unntak som sier at inngangen er feil.
Kompilere tidsfeil er det enkleste å håndtere fordi kompilatoren vanligvis forteller deg nøyaktig hva som er galt og hvor feilen har oppstått. Selv om informasjonen ikke er nøyaktig, vil kompilatoren i det minste få deg til det høyre området av den ødelagte koden, slik at du kan lete etter feilen den inneholder.
For å sikre at alle forstår nøyaktig hvordan Java-språket skal fungere, lager utviklere en spesifikasjon for det. Denne spesifikasjonen inneholder språkelementene i et spesielt språk som heter Backus-Naur Form (BNF). Bruke BNF er en ekstremt presis metode for å beskrive et språk slik at det ikke er noen risiko for feilfortolkning av noen.
Du kan se et utvalg av BNF for Java-språket ved Institutt for datalogi - Daimi. Ikke bekymre deg for mye om å kunne lese denne spesifikasjonen. De fleste utviklere lærer aldri å tolke BNF for språkene de bruker - det er domenet til kompilatorutviklere.
Runtime-feil
Java-kompilatoren kan ikke finne alle feilene i koden din. Hvis skjemaet til koden er riktig (det vil si, du har ikke gjort noen feil ved å skrive elementene som lager programmet), vil kompilatoren ikke finne feilen.
Hvis du for eksempel initialiserer en numerisk verdi til 5 i stedet for 4, kan kompilatoren ikke finne feilen for deg fordi kompilatoren ikke har noen anelse om at du egentlig ment å skrive 4. Disse feilene oppretter kjøretidsfeil - de feilene som oppstår på et tidspunkt under programgjennomføringen.
Runtime feil kan oppstå på alle mulige tider. Noen feil er mer sannsynlig å forekomme på bestemte tidspunkter. Følgende liste gir deg noen ideer om når kjøretidsfeil sannsynligvis vil oppstå:
-
Initialisering: Når programmet starter først - før det presenterer noen form for grensesnitt til brukeren eller utfører noe nyttig arbeid - går det gjennom en initialiseringsfase. Dette er når du setter en variabel til feil type eller prøver å bruke en variabel før du initialiserer det, blir det lagt merke til det. Mange ressursrelaterte feil oppstår også under initialisering fordi de fleste applikasjoner åpner nødvendige ressurser i løpet av denne tiden.
-
Driftsmodus: Etter at et program initialiseres, er det i driftsmodus. Hvis det har et brukergrensesnitt, begynner det å samhandle med brukeren. Dette er tidspunktet da brukerinnmatningen er viktigst.
Du finner også feil initialiserte variabler for øyeblikket fordi brukeren (eller mottakeren av programutgangen, for eksempel systemet) vil se at utgangen er feil. Brukerforespørsler om ressurser, for eksempel en datafil, oppretter også feil i løpet av denne tiden.
-
Bakgrunnsbehandling: De fleste bakgrunnsbehandlingsfeil skyldes miljøet (for eksempel tap av en nettverkstilkobling), manglende ressurser (for eksempel en tapt fil), feilinnstilte variabler eller feil i hvordan du fortalte programmet å utføre en oppgave. Noen oppgaver utføres vanligvis i bakgrunnen enn andre er.
Hvis du for eksempel skriver ut et dokument eller laster ned ressurser fra Internett, utføres det ofte i bakgrunnen, mens brukeren fortsetter å jobbe med programmet i forgrunnen.
-
Avslutt: Når brukeren (inkludert systemkontoer) forteller programmet, er det ikke lenger nødvendig, går programmet gjennom en avslutningsfase. I løpet av denne avslutningsfasen lukker applikasjonen filer og utfører andre husholdningsarbeid som sikrer at programmet ikke lar et rot for operativsystemet.
De vanligste feilene som kan oppstå i denne fasen, frigjør ikke ressurser som søknaden din har brukt og ikke lagrer data til disk. Selvfølgelig kan det oppstå kodingsfeil når som helst, og denne operasjonsfasen er ikke noe unntak. Du kan fortelle søknaden om å lukke fem filer når bare fire av dem faktisk er åpne.
JRE vil presentere de fleste kjøretidsfeil det oppdager til deg som unntak. JRE vil imidlertid ikke fange alle feilene i søknaden din.Du må også se på utgangen av søknaden din for å avgjøre om utgangen stemmer overens med forventningene du har for en gitt inngang.
I tillegg er det viktig å se på tilstanden til ressurser du bruker for å sikre at de ikke er skadet på noen måte. For eksempel må du sørge for at data som du skal lagre i en fil, faktisk ender i filen når søknaden avsluttes.
Java 8 har sterkere vekt på sikkerhet, noe som betyr at du vil se flere SecurityException-forekomster når du jobber med søknaden din.
Å se en økning i sikkerhets unntak betyr ikke at koden din er feil eller at Java 8 er fylt med feil - det betyr at Java 8 automatisk lokaliserer og forteller deg om problemer som kan forårsake sikkerhetsproblemer når folk bruker programmet.
Dokumentasjonen SecurityException vises på Java. nett. Selvfølgelig vil du vite hva alt hubbub handler om.