Permalänk

Felhantering

Hejsan Sweclockare!

Har suttit hela natten och försökt lära mig om felhantering i Visual Studio men jag verkar inte komma någonstans.

Till denna miniräknare ska jag fixa try och catch men jag är lost. Har försökt läsa om de så jag förstår innebörden med det men jag har svårt att få in de i koden. Är de någon som kan ge en hjälpande hand? (Ni behöver inte fixa allt men kanske hjälpa mig på vägen och förklara hur jag ska börja)

using System; namespace Calc_swich { class Program { static void Main(string[] args) { //string = datatyp text string namn; double tal1, tal2, res; //double datatyp decimaltal char c; //char datatyp tecken string tmp; //ÄNDRINGAR TILL AVANSERAD 2 bool fel_opertor = false, fort = true; // en datatyp som kan ha två värde sant eller falskt. //en avgränsare Console.WriteLine("------------------------------------------\n");//\n ger en extra radbrytning //Välkomsttext Console.Write("Mata in ditt namn: ");//Ingen radbrytning mellan texten som visas och den som matas in namn = Console.ReadLine(); Console.WriteLine("Välkommen " + namn + ", du kan börja räkna "); //en avgränsare Console.WriteLine("------------------------------------------\n");//\n ger en extra radbrytning //ÄNDRINGAR TILL AVANSERAD 2 // en ytre do-loop och en inre do-loop do //Loopa så att det går att göra flera beräkningar { Console.Write("Mata in tal1: "); tmp = Console.ReadLine(); tal1 = Convert.ToInt32(tmp); Console.Write("Mata in tal2: "); tmp = Console.ReadLine(); tal2 = Convert.ToInt32(tmp); //Kör koden nedan (loopa koden) så länge (se while) do { Console.Write("Mata in räknesätt som operator (+ - * / %): "); c = Convert.ToChar(Console.ReadLine()); Console.WriteLine("------------------------------------------\n");//\n ger en extra radbrytning switch (c) { case '+': { res = tal1 + tal2; Console.WriteLine("Summa: " + res); fel_opertor = false; break; } case '-': { res = tal1 - tal2; //res = Math.Sqrt(tal1); Console.WriteLine("Summa: " + res); fel_opertor = false; break; } case '/': { res = tal1 / tal2; Console.WriteLine("Summa: " + res); fel_opertor = false; break; } case '*': { res = tal1 * tal2; Console.WriteLine("Summa: " + res); fel_opertor = false; break; } default: { fel_opertor = true; Console.WriteLine("Du matade in fel operator, försök igen"); break; } } } while (fel_opertor == true);//så länge då fel_opertor är sant //fel_opertor säts till falskt från början och sant om användaren matar in fel operator //ÄNDRINGAR TILL AVANSERAD 2 Console.Write("Vill du göra fler beräkningar? (j / n)? "); c = Convert.ToChar(Console.ReadLine()); if ((c == 'j') || (c == 'J')) //|| betyder eller { fort = true; Console.Clear(); //en avgränsare Console.WriteLine("------------------------------------------\n"); Console.WriteLine(" " + namn + ", du kan fortsätta att räkna "); //en avgränsare Console.WriteLine("------------------------------------------\n"); } else if ((c == 'n') || (c == 'N')) { fort = false; Console.WriteLine("Tack för den här gången\n"); } } while (fort == true);//så länge användaren vill fortsätta är fort = sant Console.ReadKey(); } } }

Dold text
Permalänk
Medlem

try/catch ska du endast använda om du har kod som kan göra att ett fel inträffar. Exempelvis, säg att du hämtar inputdata från en användare och försöker tolka detta som ett heltal. Om användaren har matat in "hej" så kommer ett exception att kastas.

Det ser ut på detta vis

try { //Här skriver man kod som man anser kan kasta ett exception om ett fel inträffar } catch (Exception e) { //Här fångar vi detta exception och "hanterar" det. Hanteringen kan exempelvis vara att meddela användaren att ett fel har skett. }

I ditt fall så kan exceptions inträffa där du använder Convert.ToInt32(). Denna kan kasta två typer av exceptions där den ena säger att man har angett för stort eller litet tal (overflowexception) eller så har man angett en sträng som inte går att konvertera (formatexception).

För just Convert.ToInt32()-dokumentation så kan du läsa detta:
http://msdn.microsoft.com/en-us/library/aa325176%28v=vs.71%29...

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

Tackar, de löste sig tillslut