Starší komentáře ke článku: Java a výjimky - pokročilé techniky

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Pavel

Datum vložení: 23.2.2005 9:44:05

Super, díky za to, co píšete.

Avatar

Autor komentáře: charlie

Datum vložení: 24.2.2005 12:13:49

jojo, skvely clanky a navic dobre napsany tak, ze je muzou pochopit i lidi kteri o tom nikdy neslyseli

Avatar

Autor komentáře: harkonnen

Datum vložení: 2.3.2005 13:41:56

Moc pekny clanek. Nicmene, Uvedl jste retezeni vyjimek jako alternativu, pokud nemuzeme vyjimky generalizovat do jedne obecne. Priklonil bych se k tomu retezeni i z jinych duvodu. Prijde mi to jako ciste reseni a je to perfektni zpusob jak trasovat chybu az na nejnizsi uroven, coz muze byt pri "dedeni" vyjimky problem.

Avatar

Autor komentáře: Dušan Kaloč

Datum vložení: 3.3.2005 19:28:05

Dobrý den, chtěl bych se zeptat, jestli existuje způsob, jak "hodit" vyjímku o řád výš, tedy do volající funkce, pokud dojde k vyjímce - v tomto případě chybě ExceptionInInitializerError - ve statickém inicializačním bloku. Již jsem udělal pár pokusů, ale způsob, jak to udělat, zřejmě není. To co chci - tedy poslat zachycenou "throwable" o řád výš bez ztráty informace - se mi podařilo - resp. Javě samotné - pouze ve "speciálním" případě a to, když ve statickém inic. bloku je umístěn příkaz/y, který generuje pouze runtime vyjímky/chyby a není ošetřen - v tomto případě sám JVM takto vzniklou "Throwable" pošle o řád výš - tudíž to, co chci Pokud byste věděl, jakým způsobem vyjímky "vyhazovat" ze static bloku - které jsou např. generovány metodou (tzn. např. throws Throwable), jenž je invokována právě v této části kódu - byl bych velice rád.

Avatar

Autor komentáře: Jiří Billig

Datum vložení: 7.4.2005 14:31:54

Je možné nějak zjistit zdroj výjimky ? Podle mne ne a je škoda, že neexistuje metoda getSource(), která by pracovala následovně. try { Soubor o1 = new Soubor("c:\ahoj.txt"); Soubor o2 = new Soubor("c:\nazdar.txt"); o1.otevri(); o2.otevri(); o2.duplikuj(o1); o2.zavri(); o1.zavri(); } catch (Exception e) { if (e.getSource() == o1) { // delej neco } else if (e.getSource() == o2) { // delej neco } }

Avatar

Autor komentáře: Jiří Billig

Datum vložení: 7.4.2005 14:42:12

Oprava zdrojoveho kodu, problem zustava :-). Soubor o1, o2; try { o1 = new Soubor("c:\ahoj.txt"); o2 = new Soubor("c:\nazdar.txt"); o1.otevri(); o2.otevri(); o2.duplikuj(o1); o2.zavri(); o1.zavri(); } catch (Exception e) { if (e.getSource() == o1) { // delej neco } else if (e.getSource() == o2) { // delej neco } }

Avatar

Autor komentáře: Roman Dagi Pichlik

Datum vložení: 7.4.2005 14:56:46

Pokud je Soubor Vas objetk, tak si tam muzete vytvorit vlastni vyjimku, do ktere si krome puvodni vyjimky zabalite i referenci na vlastni objekt, ve kterem k vyjimce doslo. }catch (SouborException e) { if(e.getExceptionThrower == o1){ //do something }else{ //do something else } }

Avatar

Autor komentáře: Jiří Billig

Datum vložení: 7.4.2005 15:06:58

Objekty typu soubor jsou pouze demonstracni, abych nemusel slozite vzpominat na nazvy a metody trid v Java API :-). Pochopitelne me zajimaji vyjimky generovane objekty trid z Java API.

Zpět na článek | Úvodní stránka Interval.cz