C++ - Throw řetězec – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ - Throw řetězec – C / C++ – Fórum – Programujte.comC++ - Throw řetězec – C / C++ – Fórum – Programujte.com

 

PizzDec
~ Anonymní uživatel
3 příspěvky
8. 4. 2016   #1
-
0
-

Zdravím,

není ani tak podstatné čeho se snažím dosáhnout. To lze z kódu jasně vydedukovat, že se snažím ošetřit dynamickou alokaci určité struktury. Co je ale podstatné, aby uživatel zadal validní hodnotu pro vytvoření struktury. To jsem tedy ošetřil konstrukcí (vyjímkou) throw catch. Co ale řeším je, jak informovat programátora vyjímkou řetězcem, který tam sice mam ale proč "nepřekryje" standartní hlášení. 

Exception thrown at 0x74D4C52F in ConsoleApplication1.exe: Microsoft C++ exception: char at memory location 0x002AF718.

	/* Dynamic alloc struct */
	Employeers * EMP;

	try
	{
		if (EmpCount > 0)
			EMP = new Employeers[EmpCount]; // An array cannot have zero size. (ISO 9899:2011 6.7.6.2)
		else
			throw "An array cannot have zero size";
	}
	catch (const char * Excp)
	{
		cerr << "Struct Employeers - "  << endl;
		throw Excp; // copy-initializes a new exception object of type std::exception
		//throw;   // rethrows the exception object of type std::length_error
	}

Proč tedy není v debugu ten řetězec ? Proč mě na to reaguje výchozí vyjímka...

Nahlásit jako SPAM
IP: 212.96.160.–
q
~ Anonymní uživatel
219 příspěvků
8. 4. 2016   #2
-
0
-

A ten throw v tom catchi chytá kdo? A ten komentář za ním není pravda.

Nahlásit jako SPAM
IP: 213.211.51.–
ondrej39+1
Věrný člen
9. 4. 2016   #3
-
0
-

#1 PizzDec
Visual Studio má takovou velmi pěknou funkcionalitu, jmenuje se debugger a debugging mode, dá se do něho dostat vybuilděním aplikace a jejím spuštěním pomocí F5 (nebo pomocí menu Debug -> Start Debugging).

Ladění aplikací je jedna z věcí, kterou programátor musí ovládat. Hoď si na řádek Employeers * EMP break point a odkrokuj si, co se v aplikaci děje a kdy přesně ti aplikace na neodchycené výjimce spadne. Laický odhad, bude to v catch bloku.

Nahlásit jako SPAM
IP: 46.39.172.–
Inject all the dependencies!
PizzDec
~ Anonymní uživatel
3 příspěvky
9. 4. 2016   #4
-
0
-

Čeho se snažím dosáhnout je aby mě IDE Visual Studio, zaregistrovalo mojí hlášku vyjímky (vyjímka samozřejmně break-ne chod programu). Proč se ale hláška vyjímky nezobrazí v output consoli, nebo v messageboxu od IDE, místo nějakého runtime erroru.

Nebo jediná možnost je použiti OutputDebugString(..)/cerr/cout, jinak má řetězec pouze funkci "komentáře".

Nahlásit jako SPAM
IP: 212.96.160.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 36 hostů

Podobná vlákna

Retězec — založil griddlecake

Retezec v C — založil Vojta

Retezec — založil Hlavinka

Řetězec — založil Clin

RS232 řetězec — založil Peter

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý