Keresés

Új hozzászólás Aktív témák

  • Jim-Y
    veterán

    Hogyhogy nem kezeli le? A második utasítás meg se fog hívódni, mert az exceptiontől kiszáll abból a belső blokkból. Ez a dolgok természetes rendje, a második függvényhívásig nem jut el a program se try blokkban, se anélkül, ha kivételt dob az első.

    A szóhasználat miatt nem jön át mit szeretnél, de azért próbálok valamit írni.

    Ha mindkettő elszállhat és mindkét hibát le akarod nyelni, akkor két try blokkot írsz egymás után.
    try {
    valami1();
    } catch (ex) {
    // kiirod, megeszed, egyremegy
    }

    try {
    valami2();
    } catch (ex) {
    }

    De ha mondjuk a második nem szállhat el, és meg akarod hívni az első hívás sikerességétől függetlenül, még akkor is ha továbbdobod a kivételt, akkor ott a finally.
    try {
    valami1();
    } catch (ex) {
    // kiirod, megeszed, egyremegy
    // vagy tovabbdobod a "throw ex;" sorral
    } finally {
    valami2();
    }

    Két try blokkot egymásba ágyazni tényleg nem szerencsés, mert amellett hogy egyre mélyebben kell indentálni, nem annyira szembetűnő hogy hiba esetén mi is történik.

    Mondjuk ha ezek a te függvényeid, akkor akár megírhatnád őket úgy, hogy csak akkor dobjanak kivételt, amikor ténylegesen valami nagy hiba történik, nem pedig a kivételek köré szervezed a logikát (klasszikus antipattern). A boolean visszatérési értékű függvények pl. jók erre.

    Hogyhogy nem kezeli le? A második utasítás meg se fog hívódni, mert az exceptiontől kiszáll abból a belső blokkból. Ez a dolgok természetes rendje, a második függvényhívásig nem jut el a program se try blokkban, se anélkül, ha kivételt dob az első.

    Igen-igen, ezt tudom, pont erre irányult a kérdés, hogy hogy lehetne a második utasítást is lekezelni ugyanabban a try-ban, csak nem tudtam jól megfogalmazni :/

    Egyébként köszönöm az ötleteket, pont ilyen válaszra számítottam, ámbár amiket írtál azokat ismertem. Ezek az én függvényeim, nem csinálnak semmit, csak az első a jQuery objektumhoz "simán" hozzáfűzött függvény, míg a második a jQuery.prototype-hoz fűzött, az első azért dob biztosan kivételt, mert a függvényt a deklarált objektum után hoztam létre, így a meghívott objektumnak nem lesz showText() metódusa, míg a második esetben, prototype-nál igen, így az nem dob kivételt. Innen jött a kérdés :) De akkor mostmár tudom, hogy ahogy írtam úgy semmiképp nem lehet, köszi. :)

Új hozzászólás Aktív témák