eGospodarka.pl
eGospodarka.pl poleca

  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!not-for-mail
    From: g...@n...invalid (Adam Wysocki)
    Newsgroups: pl.comp.programming
    Subject: Re: wyjatki
    Date: Fri, 30 Mar 2012 13:24:48 +0000 (UTC)
    Organization: news.chmurka.net
    Lines: 45
    Message-ID: <p...@n...chmurka.net>
    References: <jkuce7$3sv$1@inews.gazeta.pl> <jkujkr$f6k$1@inews.gazeta.pl>
    <jkunjr$1dq$1@inews.gazeta.pl> <jkvbqm$tq$1@inews.gazeta.pl>
    <jkvik1$ovg$1@inews.gazeta.pl> <jl11bd$pk7$1@inews.gazeta.pl>
    NNTP-Posting-Host: avenger.chmurka.net
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: avenger.news.chmurka.net 1333113888 30948 94.75.119.166 (30 Mar 2012
    13:24:48 GMT)
    X-Complaints-To: usenet#chmurka.net
    NNTP-Posting-Date: Fri, 30 Mar 2012 13:24:48 +0000 (UTC)
    X-Accept-Language: pl, en-us, en
    X-Face: cH9M7E&=}hx;:1xh~O-@_W%(+nYCoNx6[gzClaf{{5#M@%v@D@3#5[=yv>XO\D?39"SsA~%
    :>dyB~`d?;hdxK-'g3?"Mz/4%[j@_MMe8:8B=EUYkc#nqxy<vvbc(@~@|ML,jK%C;z3)gKyR:,QBb3
    9PPzM74c>y{6"X`:)D*<j-,~_L`IYzr)@RG_dn
    X-Composer: nano
    X-User-Uptime: 854590606 seconds
    X-Hackerkey: v4sw7CHPSU$hw8ln4pr8OP$ck4$ma6u7LNS$w2Cm4g/l8D$i5e5t4Xb5en8$aIs0r1
    p0/0g4/5CHO http://www.hackerkey.com/
    User-Agent: tin/1.9.3-20080506 ("Dalintober") (UNIX) (Linux/2.6.38-avenger (i686))
    X-Geek-Code: v3.1 G d- s:++ a- C++++$ UBL++++$ P+ L++++$ !E !W++ N++ o? K--? !w !O M?
    !V PS+++ PE++ Y++ PGP++ !t !5 X+ !R tv-- b- DI D+ G e h r++ y?**
    X-Comment-To: " " <f...@g...SKASUJ-TO.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:196442
    [ ukryj nagłówki ]

    <f...@g...skasuj-to.pl> wrote:

    > jak wspomnialem mz wykorzystanie wyjatkow by wylaczyc na stale jakas
    > funkcje/galaz z ktorej polecial jakis niezidentyfikowany blad moze
    > byc moze miec ew pewien sens - (poki co jedyne ew sensowne dzialanie
    > jakiemi sie z tym kojarzy) - ale nie pisze poki co programow
    > ktore by tego wymagaly a wolalbym kiedys przemyslec obsluge bledow w
    > szerszy i ogolnijszy sposob

    Ukrywanie błędów to ślepa uliczka. Tak długo, jak nie masz pewności, co
    właściwie się stało, próba kontrolowanego kontynuowania programu może
    być ryzykowna. Chociażby dlatego że nie wiesz w jakim stanie jest heap,
    w końcu poszedł wyjątek = coś poszło nie tak jak przewidziano.

    M.in. dlatego stosowanie catchall jest przez wielu uznawane za złą praktykę.

    Osobna sprawa to catch własnego wyjątku - ja często w miejscach, w których
    zakładam, że coś powinno być tak a nie inaczej, daję dla pewności coś ala
    assert - ale własny, zawsze kompilowany, a nie biblioteczny (który rozwijany
    jest tylko w wersji debugowej). Makro sprawdza warunek i jak jest niezgodny,
    to rzuca wyjątek z określoną treścią, np:

    int rs = funkcja();
    Assert(rs == 3, "%d", rs);

    switch (a)
    {
    case ...:
    break;
    default:
    Assert(false, "%d", a);
    }

    Wtedy funkcja łapiąca wyjątek może wypisać komunikat i wyjść, a main wtedy
    zakończy program (dbam o to żeby miejsce wyjścia z programu było tylko
    jedno).

    > nie wiem po co niektore pola (np edi esi ebx, czy to potrzeba zachowania
    > czesci kontekstu funkcji z catch? ani co to jest j_ret)

    Jak chcesz programować wysokopoziomowo to musisz nauczyć się myśleć
    wysokopoziomowo. Rejestry zostaw kompilatorowi.

    --
    Gof

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

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: