Innehållsförteckning:
Video: Java svenska spel - 9 - Kollision med bollen 2024
Fel i Java-applikationer kan inträffa vid olika tillfällen. Du kan emellertid i stor utsträckning klassificera när ett fel uppstår i två kategorier, vid kompileringstid och runtime, som beskrivs i följande avsnitt.
Kompilera tidsfel
Kompilatorn omvandlar din programkod till Java byte-kod. Under denna process tar den den läsbar kod som du skriver och omvandlar den till något som Java Runtime Environment (JRE) förstår.
För att utföra denna process måste kompilatorn analysera koden, vilket betyder att den läser koden på ett sätt som entydigt bestämmer exakt vad du vill att programmet ska göra när du vill att det ska göra det, och hur du vill att uppgiften ska uppnås. Om du bryter mot reglerna för att skriva entydig kod, visar kompilatorn ett felmeddelande. Det här meddelandet är egentligen ett slags undantag.
Parsing betyder att du läser inmatningen du tillhandahåller, till exempel kod i läsbar form och omvandlar den till något annat, till exempel Java byte-kod. En applikation kan också analysera användarinmatning. Till exempel kan en användare skriva en sträng som din ansökningskod blir till ett nummer.
Så, parsing är en handling att läsa någon typ av ingång, tolka den inmatningen på ett visst sätt och sedan producera produktionen baserat på den tolkade ingången. En parser genererar ett fel när ingången inte är vad den förväntar sig.
Om användaren exempelvis matar in en sträng som innehåller bokstaven C och du förväntade dig en sträng som innehåller ett tal, till exempel 123, kommer parsern att generera ett undantag som säger att ingången är felaktig.
Kompilera tidsfel är det enklaste att hantera eftersom kompilatorn normalt berättar precis vad som är fel och var felet har uppstått. Även om informationen inte är exakt kommer kompilatorn åtminstone att du kommer till det rätta området för den trasiga koden så att du kan leta efter felet som den innehåller.
För att säkerställa att alla förstår precis hur Java-språket ska fungera, skapar utvecklare en specifikation för den. Denna specifikation innehåller språkelementen i ett speciellt språk som heter Backus-Naur Form (BNF). Att använda BNF är en extremt exakt metod att beskriva ett språk så att det inte finns någon risk för fel tolkning av någon.
Du kan se ett exempel på BNF för Java-språket vid Institutionen för datavetenskap - Daimi. Oroa dig inte för mycket om att kunna läsa denna specifikation. De flesta utvecklare lär sig aldrig att tolka BNF för de språk de använder - det är domänen för kompilatorns utvecklare.
Runtidfel
Java-kompilatorn kan inte hitta alla fel i din kod. Om koden är korrekt (det vill säga, du har inte gjort några fel när du skriver in de element som skapar programmet) kommer kompilatorn inte att hitta felet.
Om du till exempel initialiserar ett numeriskt värde till 5 istället för 4, kan kompilatorn inte hitta felet för dig eftersom kompilatorn inte har någon aning om att du verkligen menade att skriva 4. Dessa typer av misstag skapar körtidsfel - de fel som händer någon gång under genomförandet av programmet.
Runtidfel kan förekomma vid alla möjliga tillfällen. Vissa fel är mer benägna att uppträda vid specifika tider. Följande lista ger dig några idéer om när körfel sannolikt kommer att inträffa:
-
Initialisering: När programmet börjar först - innan det presenterar något slags gränssnitt för användaren eller utför något användbart arbete - går det igenom en initialiseringsfas. Det här är när du ställer in en variabel till fel typ eller försöker använda en variabel innan du initierar det kommer det att märkas. Många resursrelaterade fel uppstår också under initialiseringen eftersom de flesta applikationer öppnar nödvändiga resurser under den här tiden.
-
Driftsläge: När en applikation har initierats är den i driftläge. Om det har ett användargränssnitt börjar det interagera med användaren. Det här är den tid då användarens inmatning är viktigast.
Du hittar också felaktigt initierade variabler just nu eftersom användaren (eller mottagaren av programutmatningen, till exempel systemet) ser att utmatningen är felaktig. Användarbegäran om resurser, till exempel en datafil, skapar också fel under den här tiden.
-
Bakgrundsbearbetning: De flesta bakgrundsbehandlingsfel är resultatet av miljön (t.ex. förlust av en nätverksanslutning), saknade resurser (t.ex. en förlorad fil), felaktigt initierade variabler eller fel i hur du sa till ansökan att utföra en uppgift. Vissa uppgifter utförs vanligare i bakgrunden än andra är.
Utskrift av ett dokument eller nedladdning av resurser från Internet utförs vanligtvis i bakgrunden, medan användaren fortsätter att arbeta med programmet i förgrunden.
-
Avstängning: När användaren (inklusive systemkonton) meddelar programmet är det inte längre nödvändigt, går programmet genom en avstängningsfas. Under denna avstängningsfas stänger applikationen filer och utför andra hushållssysslor som säkerställer att programmet inte lämnar en röra för operativsystemet.
De vanligaste fel som kan uppstå under denna fas frigör inte resurser som din ansökan har använt och inte sparar data till disken. Naturligtvis kan kodfel inträffa när som helst, och denna fas är inte något undantag. Du kan säga att applikationen stänger fem filer när bara fyra av dem är faktiskt öppna.
JRE kommer att presentera de flesta runtime-fel som det upptäcker för dig som undantag. JRE kommer dock inte att fånga alla fel i din ansökan.Du måste också titta på utmatningen i din ansökan för att bestämma om utmatningen överensstämmer med förväntningarna du har för en given ingång.
Dessutom är det viktigt att titta på tillståndet för de resurser du använder för att se till att de inte skadas på något sätt. Du måste till exempel se till att alla data som du ska spara i en fil faktiskt hamnar i filen när din ansökan stängs av.
Java 8 har en starkare tonvikt på säkerhet, vilket innebär att du får se fler SecurityException-instanser när du arbetar med din ansökan.
Att se en ökning av säkerhetsundantag betyder inte att din kod är felaktig eller att Java 8 är fylld med buggar - det betyder att Java 8 automatiskt lokaliserar och berättar om problem som kan orsaka säkerhetsproblem när folk använder din ansökan.
Dokumentationen SecurityException visas på Java. netto. Självklart vill du veta vad all hubbub handlar om.