Van nekem egy kis programom, és lenne egy kis kérdésem. Ötletek a megoldásra?
Szóval, van egy kis számológépem, amit C#-ban dobtam össze, de beleraktam minden szép és általam ismert dolgot, jóó sok fölösleges dolgot is, de nem baj, mert próbálgatom mit tudok. Szóval, a probléma a következő:
van egy try-catch "ciklusom", és a catch-nél egy Exception error-t írok be argumentumnak, és az lehetséges lenne-e hogy az error-t amit kiad, azt kiírassam egy fájlba, egy StreamWriter segítségével? Gondoltam hogy bevezetem az errort egy stringbe, de valahogy nem sikerült összehoznom. Szóval, ötletek arra, hogyan tudnám az Exceptiont kiírni egy fájlba?
A try-catch az nem ciklus. Egyszer fut le!
Kódot mutass, hogy hol akadtál el. Elvileg nem nagy szám - plána ha már van számológéped.
Akkor nem ciklus, bocsi, azért írtam idézőjelbe mert nem voltam benne biztos hogy az. Lényeg a lényeg hogy itt van egy kód, aminél nem ír szintaktikai vagy egyéb hibát, de nem tudok előidézni olyan errort amit bele tudnék írni a fájlba. Gondolkoztam kicsit, és megpróbáltam az Exception helyett egy OverflowExceptiont bevezetni, és a számológépem négyzetre emelős függvényében kerestem vele a hibát, a következő képpen:
try
{
Négyzet();
}
catch (OverflowException overflow)
{
overflow.ToString();
StreamWriter writer = new StreamWriter(fajl);
writer.Write(overflow);
}
A Négyzet(); tartalma:
static void Négyzet()
{
Console.WriteLine("Add meg a számot amit négyzetre szeretnél emelni");
szam3 = Convert.ToInt32(Console.ReadLine());
eredmeny = (szam3 * szam3);
Console.WriteLine("Az eredmény: {0}",eredmeny);
}
Megpróbáltam azt hogy 999999999999999-et emelek négyzetre, de megállt a program, visszaugrott a Visual Studio-ba, és csak annyit jelzett, hogy ugye túlmegy az "int" határain az eredmény (megjegyezném, azoknak akiknek nem lenne egyértelmű: direkt ekkora számot írtam be, a program demonstrálása végett)
Edit: kihagytam a "using" szót, de így sem lett jobb:
try
{
Négyzet();
}
catch (OverflowException overflow)
{
overflow.ToString();
using (StreamWriter writer = new StreamWriter(fajl))
{
writer.Write(overflow);
}
}
HelloBello,
Ha "Debug" (F5) módban futtatod a progidat, a kivételkezelés marad a VS dolga.
Két lehetőséged van:
- Run without debugging, és máris látod a try-catch-exeption blokkod valódi működését
- Elméletileg valahol optionsban lehet állítani, hogy a kivételeket a vs kezelje, vagy a programod maga, hogy debuggolni tudd. (fogalmmam nincs pontosan hol van ez)
Még egy belepofázás részemről, ha szabad :)
try
{
nényzet()
}
// ez elkap minden kivételt, mert úgysem minden egyes kivételre külön eljárást akarsz írni, hanem csak mindent egy file-ba.
catch (Exeption EX)
{
string hiba = EX.ToString();
// usingra kezdj el "rászokni" file műveletnél, hogy ha befejezte a melót a StreamWriterrel, szépen takarítson maga után
using (StreamWriter smw = new StreamWriter(file,true))
{
smw.WriteLine(hiba);
}
}
Kb talán így jobb lesz a dolog.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!