Kezdőoldal » Számítástechnika » Programozás » Van nekem egy kis programom,...

Van nekem egy kis programom, és lenne egy kis kérdésem. Ötletek a megoldásra?

Figyelt kérdés

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?



2012. szept. 8. 15:18
 1/7 anonim ***** válasza:

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.

2012. szept. 8. 15:26
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

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)

2012. szept. 8. 16:09
 3/7 A kérdező kommentje:

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);

}

}

2012. szept. 8. 16:12
 4/7 JulesM111 ***** válasza:

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)

2012. szept. 9. 07:56
Hasznos számodra ez a válasz?
 5/7 JulesM111 ***** válasza:

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.

2012. szept. 9. 08:13
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Köszi az ötletet! Lenne egy kérdésem, hogy a "true" kulcsszót miért kell odaírni a StreamWriter-hez?? Nyugodtan kötöszködj mellesleg, elvégre ebből tanulok, ebből tudok valamit kezdeni :)
2012. szept. 9. 13:14
 7/7 JulesM111 ***** válasza:

Szia,


A true amiatt kell, hogy ha már megtalálja a file-t, akkor hozzá írjon.

[link]

2012. szept. 16. 08:27
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!