Starší komentáře ke článku: Java a výjimky - pokročilé techniky
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 23.2.2005 9:44:05
Super, díky za to, co píšete.
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
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.
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.
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 } }
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 } }
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 } }
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.