Hem Personliga finanser Programmering Java: När fel uppstår - dummies

Programmering Java: När fel uppstår - dummies

Innehållsförteckning:

Video: Java svenska spel - 9 - Kollision med bollen 2024

Video: Java svenska spel - 9 - Kollision med bollen 2024
Anonim

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.

Programmering Java: När fel uppstår - dummies

Redaktörens val

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

I Photoshop Element, Redigera Snabbt läge är en uppskattad version av Redigera fullt läge som ger grundläggande fixverktyg tillsammans med några unika funktioner, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Redigera snabbläge för att reparera dina foton: Välj ett eller flera foton i ...

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Snabb Fotoredigering är en uppskattad version av Full Photo Edit-läge som bekvämt ger grundläggande fixeringsverktyg och kastar i några unika egenskaper, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Quick Photo Edit-läget för att reparera dina foton:

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Fotoeffekter i Photoshop Elements 11 fungerar som applicera filter; medan dialogrutan Filtreringsgalleri ger dig många alternativ för att tillämpa ett filter, ger den guidade panelen dig filtereffekter och tar dig genom steg för att justera ljusstyrka, ändra färgton och mättnad och göra andra justeringar för att perfekta resultatet. Du ...

Redaktörens val

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

När du granskar en bild, bestämmer du om det är en målvakt. Om du tittar på en bild på din Canon EOS 7D Mark II, gillar du inte bilden av någon anledning kan du radera det. Men borttagning av bilder måste ske med stor försiktighet eftersom uppgiften inte kan ångras. När du har raderat en ...

Hur man redigerar filmer på en Canon EOS 60D - dummies

Hur man redigerar filmer på en Canon EOS 60D - dummies

60D Edit-funktionen gör det härligt enkelt för att ta bort oönskade delar från början eller slutet av en film direkt på din kamera. Denna ombordredigering är praktisk men grundläggande, så förvänta dig inte mirakel. Här är de enkla stegen för att trimma början eller slutet på en film: Klicka på ikonen Redigera (det ser ut ...

Redaktörens val

Hur man arbetar med text i ett Word 2010-tabell - dummies

Hur man arbetar med text i ett Word 2010-tabell - dummies

Text hinner i ett bord i Word 2010 på en cell-vid-cell basis. Varje cell i ett Word-bord kan ha ett eget styckeformat och en egen uppsättning flikar. Grupper av celler, rader och kolumner och hela tabellen kan väljas och formateras samtidigt, om du vill. All standardtext ...

Hur man arbetar med Word 2010: s decimala flik - dummies

Hur man arbetar med Word 2010: s decimala flik - dummies

Du kan använda decimalfliken i Word 2010 till rad upp kolumner av siffror. Även om du kan använda en rätt flik för att göra detta jobb är decimalfliken ett bättre val. I stället för högerjusterad text, som den högra fliken gör, justerar decimalfliken siffror efter deras decimaldel - perioden i ...

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

O saker Word 2010 kan göra med dokument! Du kan öppna flera Word-dokument samtidigt och arbeta på mycket av dem, växla mellan de olika öppna dokumenten. Öppnar flera Word-dokument samtidigt Det är inte en fråga om hur Word kan fungera på mer än ett dokument åt gången. Nej, ...