{"id":91635,"date":"2022-10-12T01:34:37","date_gmt":"2022-10-12T06:34:37","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/"},"modified":"2022-10-12T01:34:37","modified_gmt":"2022-10-12T06:34:37","slug":"3-typer-av-programmeringsfel-och-hur-man-undviker-dem","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/","title":{"rendered":"3 typer av programmeringsfel och hur man undviker dem"},"content":{"rendered":"<div>\n<p>Programmeringsfel \u00e4r brister i hur applikationer fungerar.  De kallas vanligtvis f\u00f6r \u201cbuggar\u201d, d\u00e4rav termen \u201cfels\u00f6kning\u201d.<\/p>\n<p>Som utvecklare kommer du att \u00e4gna mycket tid \u00e5t att fixa buggar.  Ett antal av de fel du kommer att m\u00f6ta \u00e4r vanliga, och att k\u00e4nna till dem hj\u00e4lper dig att f\u00f6rhindra dem i f\u00f6rsta hand.<\/p>\n<p>H\u00e4r \u00e4r vad du beh\u00f6ver veta om dessa tre typer av programmeringsfel och hur du kan skydda dig mot dem:<\/p>\n<h2 id=\"runtime-or-execution-errors\"><span class=\"ez-toc-section\" id=\"1_Runtime_eller_Execution_Errors\"><\/span>  1. Runtime eller Execution Errors<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Dessa \u00e4r fel som uppst\u00e5r n\u00e4r ett program k\u00f6rs (dvs under k\u00f6rning).  De kan g\u00f6ra att ett program inte k\u00f6rs korrekt eller till och med inte k\u00f6rs alls.<\/p>\n<p>Fatala k\u00f6rtidsfel g\u00f6r att programk\u00f6rningen stoppas medan de icke-fatala g\u00f6r att k\u00f6rningen avslutas, men med felaktiga resultat.<\/p>\n<p>Ett typiskt k\u00f6rtidsfel \u00e4r en division med nollfel.  Division med noll \u00e4r t\u00e4nkt att ge ett o\u00e4ndligt resultat, men tyv\u00e4rr har vi inte kommit fram till en datastruktur som kan lagra den m\u00e4ngden data \u00e4nnu.<\/p>\n<p>D\u00e4rf\u00f6r leder division med noll till ett aritmetiskt undantag i Java-kompilatorn.<\/p>\n<h2 id=\"logic-errors\"><span class=\"ez-toc-section\" id=\"2_Logiska_fel\"><\/span>  2. Logiska fel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Logiska fel orsakas p\u00e5 grund av felaktiga resonemang.  Det \u00e4r viktigt att notera att dessa fel inte n\u00f6dv\u00e4ndigtvis beror p\u00e5 ett \u201cmisstag\u201d du har gjort.  De kan uppst\u00e5 f\u00f6r att du inte \u00f6verv\u00e4gde ett visst exekveringsscenario.<\/p>\n<p>De \u00e4r sv\u00e5rast att hantera.  Detta beror p\u00e5 att kod med ett logiskt fel \u00e4r ett giltigt program p\u00e5 spr\u00e5ket det \u00e4r skrivet p\u00e5. D\u00e4rf\u00f6r kommer det inte att skapa ett kompilatorfel.  Det enda problemet \u00e4r att det ger felaktiga resultat.<\/p>\n<p>Ett fatalt logiskt fel kommer att g\u00f6ra att programk\u00f6rningen stoppas medan ett icke-fatalt kommer att till\u00e5ta programk\u00f6rningen att forts\u00e4tta men med felaktiga resultat.<\/p>\n<p>Ett vanligt logiskt fel \u00e4r ett av-f\u00f6r-ett-fel.  Detta intr\u00e4ffar normalt n\u00e4r man anger ett loop-forts\u00e4ttningstillst\u00e5nd.  S\u00e4g att du vill skriva ut de f\u00f6rsta fem fyrkantstalen.<\/p>\n<p>Det kan sluta med att du skriver koden nedan i din for-loop, som bara ger de fyra f\u00f6rsta s\u00e5dana siffrorna.<\/p>\n<pre>for( int x=1; x&lt;5; x++){ System.out.ln(x*x); }<\/pre>\n<p>F\u00f6r att undvika ett s\u00e5dant fel kan du ist\u00e4llet anv\u00e4nda\n<\/p>\n<p>Ett annat vanligt logiskt fel \u00e4r att utel\u00e4mna b\u00e5da klammerparenteserna i en kontrollsats och \u00e4nd\u00e5 bildar kroppen nedan ett kodblock som \u00e4r under dess kontroll.<\/p>\n<p>Titta p\u00e5 exemplet nedan.  Den kontrollerar om ett slumptal \u00e4r udda eller j\u00e4mnt och skriver sedan ut en utdata.<\/p>\n<pre>import java.util.Random;<br\/>public class OddEven{<br\/>public static void main(String[] args) {<br\/>Random numberGenerator = new Random();<br\/>int randomNumber = numberGenerator.nextInt(10);<br\/>if ((randomNumber%2)==0)<br\/>System.out.println(\"Here is your lucky number :\" + randomNumber);<br\/>System.out.println(\"The number \"+ randomNumber +\" that you got is even\"); \/\/ line 11<br\/>}<br\/>}<\/pre>\n<p>Observera rad 11. Det kommer alltid att k\u00f6ras oavsett om slumptalet du fick \u00e4r j\u00e4mnt.  Detta skulle naturligtvis vara logiskt fel n\u00e4r siffran du fick \u00e4r udda.<\/p>\n<p>Inklusive b\u00e5da <strong>System.out.println<\/strong> p\u00e5st\u00e5enden mellan klammerparenteser { }, skulle ha undvikit detta.<\/p>\n<p>Ett annat logiskt fel att h\u00e5lla utkik efter \u00e4r att inte tillhandah\u00e5lla ett loopavslutningsvillkor.  Detta kommer att resultera i en o\u00e4ndlig loop och ditt program kommer aldrig att slutf\u00f6ras.<\/p>\n<h2 id=\"syntax-or-compile-time-errors\"><span class=\"ez-toc-section\" id=\"3_Syntax-_eller_kompileringsfel\"><\/span>  3. Syntax- eller kompileringsfel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Dessa \u00e4r fel orsakade p\u00e5 grund av brott mot Javas spr\u00e5kregler.  De kallas ocks\u00e5 kompilerings- eller kompileringsfel.<\/p>\n<p>Dessa \u00e4r de enklaste felen att hantera eftersom din kompilator alltid kommer att rapportera dem.  M\u00e5nga kompilatorer g\u00e5r till och med vidare och ber\u00e4ttar att raden i din kod felet \u00e4r p\u00e5.<\/p>\n<h2 id=\"fault-tolerance\"><span class=\"ez-toc-section\" id=\"Feltolerans\"><\/span>  Feltolerans<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ett praktiskt s\u00e4tt att hantera programvaruproblem \u00e4r att anv\u00e4nda feltolerans genom att inkludera undantagshantering.  Du kan anv\u00e4nda <strong>f\u00f6rs\u00f6k f\u00e5nga<\/strong> uttalanden f\u00f6r att uppn\u00e5 detta.<\/p>\n<p>Att forts\u00e4tta med programexekveringen oavsett undantaget i <strong>f\u00e5nga<\/strong> blockera, anv\u00e4nd <strong>till sist<\/strong> p\u00e5st\u00e5ende.<\/p>\n<p>Syntaxen \u00e4r:<\/p>\n<pre>try{ \/\/ Block to execute if there are no issues } <br\/>catch (Exception e){<br\/>\/\/ Block to handle issues found<br\/>}finally{ \/\/ Block to execute after catch<br\/>}<\/pre>\n<p>Se kodexemplet nedan:<\/p>\n<pre>import java.util.Random;<br\/>public class RandomNumbers{<br\/>public static void main(String[] args) {<br\/>Random numberGenerator = new Random();<br\/>try{<br\/>for (int counter = 10; counter&lt;=100; counter++){<br\/>int randomNumber = numberGenerator.nextInt(10);<br\/>System.out.println(counter\/randomNumber); } }<br\/>catch(Exception e){<br\/>System.out.println(\"Division by zero encountered!\");<br\/>}<br\/>finally{<br\/>System.out.println(\"Infinite value got\");}<br\/>}<br\/>}<\/pre>\n<p>Ovanst\u00e5ende program genererar ett slumpm\u00e4ssigt tal mellan noll och 10 och anv\u00e4nder sedan det numret f\u00f6r att dividera ett r\u00e4knarv\u00e4rde mellan 10 och 100. Om division med noll p\u00e5tr\u00e4ffas, f\u00e5ngar systemet felet och visar ett meddelande.<\/p>\n<h2 id=\"get-better-at-coding\"><span class=\"ez-toc-section\" id=\"Bli_battre_pa_kodning\"><\/span>  Bli b\u00e4ttre p\u00e5 kodning<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Det \u00e4r bra att l\u00e4gga till kommentarer till din kod.  Detta hj\u00e4lper dig att enkelt kamma igenom dina filer n\u00e4r du har en bugg.  Ett litet, men mycket viktigt steg f\u00f6r att utveckla starka kodningsmetoder.<\/p>\n<p>Med bra kodningsmetoder b\u00f6r du kunna undvika vanliga programmeringsmisstag.<\/p>\n<p>    <strong class=\"section-sub-title\">Om f\u00f6rfattaren<\/strong><\/p>\n<p>            <strong class=\"bio-title\">Jerome Davidson (33 artiklar publicerade)<br \/><\/strong><\/p>\n<p>Jerome \u00e4r personalskribent p\u00e5 MakeUseOf.  Han t\u00e4cker artiklar om programmering och Linux.  Han \u00e4r ocks\u00e5 en kryptoentusiast och h\u00e5ller alltid koll p\u00e5 kryptoindustrin.<\/p>\n<p>                            Mer fr\u00e5n Jerome Davidson<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Prenumerera_pa_vart_nyhetsbrev\"><\/span>Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>G\u00e5 med i v\u00e5rt nyhetsbrev f\u00f6r tekniska tips, recensioner, free e-b\u00f6cker och exklusiva erbjudanden!<\/p>\n<p>Klicka h\u00e4r f\u00f6r att prenumerera<\/p>\n<\/p><\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/#1_Runtime_eller_Execution_Errors\" >1. Runtime eller Execution Errors<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/#2_Logiska_fel\" >2. Logiska fel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/#3_Syntax-_eller_kompileringsfel\" >3. Syntax- eller kompileringsfel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/#Feltolerans\" >Feltolerans<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/#Bli_battre_pa_kodning\" >Bli b\u00e4ttre p\u00e5 kodning<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/3-typer-av-programmeringsfel-och-hur-man-undviker-dem\/#Prenumerera_pa_vart_nyhetsbrev\" >Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>Programmeringsfel \u00e4r brister i hur applikationer fungerar. De kallas vanligtvis f\u00f6r \u201cbuggar\u201d, d\u00e4rav termen \u201cfels\u00f6kning\u201d. Som utvecklare kommer du att \u00e4gna mycket tid \u00e5t att fixa buggar. Ett antal av de fel du kommer att m\u00f6ta \u00e4r vanliga, och att k\u00e4nna till dem hj\u00e4lper dig att f\u00f6rhindra dem i f\u00f6rsta hand. H\u00e4r \u00e4r vad du [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":91636,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[1523,27,163,26,45290,9487,16474],"class_list":["post-91635","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar","tag-dem","tag-hur","tag-man","tag-och","tag-programmeringsfel","tag-typer","tag-undviker"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=91635"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/91636"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=91635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=91635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=91635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}