eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingTry catch, prawidłowy sposób użyciaRe: Try catch, prawidłowy sposób użycia
  • Data: 2012-06-16 23:08:27
    Temat: Re: Try catch, prawidłowy sposób użycia
    Od: Bronek Kozicki <b...@s...net> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 04/06/2012 13:52, AK wrote:
    > Użytkownik "Maciej Sobczak" <s...@g...com> napisał:
    >
    >> Ten kod może być zarówno dobry jak i niedobry, zależnie od kontekstu.
    >
    > Ten kod (A) jest zawsze zly.

    tylko przy założeniu że "rollback" jest w sekcji catch. A mógłby być w
    destruktorze, np:


    class Connection
    {
    friend class Transaction;

    void begin();
    void rollback();
    void commit();
    void execute(const Statement&);
    // . . .
    };

    class Transaction
    {
    Connection& conn_;
    bool active_;

    public
    Transaction(Connection& c) conn_(c), active_(false)
    {}

    ~Transaction()
    {
    if (active_)
    conn_.rollback();
    }

    void commit()
    {
    if (active_)
    {
    conn_.commit();
    active_ = false;
    }
    }

    void execute(const Statement& s)
    {
    if (!active_)
    {
    conn_.begin();
    active_ = true;
    }
    conn_.execute(s);
    }
    };



    try
    {
    Transaction t(c);
    t.execute(s1);
    t.execute(s2);
    t.commit();
    t.execute(s3);
    t.commit();
    }
    catch (Error e)
    {}


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: