Gå til indholdet

N174 Egne exceptions (2)

Du skal skabe en applikation som

  • Først checker om filen c:\temp\tal.txt eksisterer (System.IO.File.Exists). Hvis den ikke findes skal der smides en ApplikationException med teksten “Filen c:\temp\tal.txt findes ikke!”
  • I en try/catch-struktur skal du nu
  • Åbne filen og hent indhold til en streng (System.IO.File.ReadAllText). Hvis det går galt skal fejlen blot smides videre.
  • Konverter indhold til et heltal (int32) ved hjælp af Convert.ToInt32. Hvis det går galt smider ToInt32 en FormatException. I så fald skal du smide en ApplikationException med teksten “Indhold kan ikke konverteres til et heltal”.
  • Læg nu 1 til tallet og gem det igen (System.IO.File.WriteAllText). Hvis det går galt skal fejlen blot smides videre.

Så du er altså ude i en try/catch ala:

try
{
}
catch (System.FormatException ex)
{
}
catch (Exception)
{
}
Klik for at se et forslag til en løsning
using System;

namespace Fejl
{
    class Program
    {
        static void Main(string[] args)
        {

            string sti = "c:\\temp\\tal.txt";
            if (!System.IO.File.Exists(sti))
                throw new ApplicationException("Filen c:\\temp\\tal.txt findes ikke!");

            string indhold = "";
            try
            {
                indhold = System.IO.File.ReadAllText(sti);
                int tal = Convert.ToInt32(indhold);
                tal++;
                System.IO.File.WriteAllText(sti, tal.ToString());
                Console.WriteLine($"Tal i fil er nu {tal}");
            }
            catch (System.FormatException)
            {
                throw new ApplicationException($"'{indhold}' kan ikke konverteres til et heltal");
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}