<html>
  <head>
    <meta content="text/html; charset=ISO-8859-2"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Sajnos ez sokak elméjében úgy jelenik meg leegyszerűsítve (néhány
    kulcs gondolatot "véletlenül" kihagyva), hogy a fejlesztői idő
    drága, a RAM olcsó, ergó nem foglalkozik semmivel, az üzemeltetés
    majd megoldja, a felhasználó alá teszi a megfelelő vasat.<br>
    Sok elnagyolt "részlet" (majdnem mindegy, hogy tervezési vagy
    programozási probléma) jelentősen meg tudja növelni az erőforrást
    igényt, végül összességében nem néhány GB RAM a kérdés, hanem sok
    milliós infrastruktúra, amik folyamatbeli komplexitásokat is
    jelentenek, amik növelik a munkaerő szükségletet és az üzleti
    kockázatot.<br>
    <br>
    Talán a felhő korszak majd kicsit rendet tesz ebben, főleg ha maga a
    fejlesztő szolgáltat: akkor már nem lesz annyira mindegy, hogy
    mennyi hardver szükséges a csodás alkalmazás alá, mert a
    versenyképességet rontja.<br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">2012.07.25. 13:33 keltezéssel,
      <a class="moz-txt-link-abbreviated" href="mailto:istvan.ketler@lhsystems.com">istvan.ketler@lhsystems.com</a> írta:<br>
    </div>
    <blockquote
cite="mid:186CDF99C3D12A42A1FF430860E5EEBB35A241CA@SW-FRAADS-MBX38.ads.dlh.de"
      type="cite">
      <meta content="text/html; charset=ISO-8859-2"
        http-equiv="Content-Type">
      <meta content="text/html; charset=ISO-8859-2"
        http-equiv="Content-Type">
      <meta content="Microsoft Word 12 (filtered medium)"
        name="Generator">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div>
        <div class="WordSection1">
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Ámen.<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Szeretnék
              annyit hozzátenni, hogy programozó ne foglalkozzék azzal,
              hogy mi a hatékonyabb. A programozó írjon nagyon szép,
              olvasható kódot, aztán tesztelje (ha lehet éles adatokkal,
              még jobb ha éles környezetben), végezzen méréseket, és
              ahol tényleg lassú, ott kezdjen optimalizálni.<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Kikerestem
              a vonatkozó részt a kedvenc könyvemből:<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">&#8222;...
              egy program egyszerű, kézenfekvő megírásával elérjük azt,
              hogy helyesen működjön, és a minimumra csökkenjen a
              zavarosság veszélye. Ezután teljesítményméréseket
              végezhetünk, hogy eldöntsük, elég jól működik-e, és ha
              nem, mire kell a figyelmünket összpontosítani. Egy adott
              algoritmusnál a sebességet szinte minden esetben csak az
              olvashatóság rovására növelhetjük. Csak akkor áldozzuk fel
              az áttekinthetőséget a sebességért, ha tudjuk, hogy a
              helyes feladatot oldjuk meg helyesen és tudjuk, hogy ez
              megéri az áldozatot.&#8221;<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">A
              könyvet, amiből idéztem, Kernighan írta (Plauger a
              szerzőtárs) 1976-ban (!), és hihetetlenül modern, mind a
              mai napig érvényes elveket mutat be gyakorlati példákon
              keresztül (külön érdekesség, hogy &#8222;Ratfor&#8221; nyelvet használ
              ehhez, ami a Fortran C-sített változata &#8211; csaknem olyan,
              mintha régi C kódot olvasnál). Csak az azóta eltelt időben
              objektum orientált, code reuse, test driven development,
              és más hasonló egzotikus állatneveket aggattunk ezekre az
              elvekre...<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Kernighan-Plauger:
              Software Tools (1976)<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">&#8222;A
              programozás magasiskolája&#8221; címmel a műszaki könyvkiadó
              kiadta a fordítását magyarul 1982-ben. A mai napig hálás
              vagyok a sorsnak, hogy annak idején zöldfülű kezdőként
              megvettem és nagy figyelemmel kiolvastam (és
              feldolgoztam). Szerintem kezdőknek a mai napig érdemes
              használni (mint ahogy a Unixot és származékait is, amik
              pedig kortársai a könyvnek &#8211; csak a Unixok azóta
              fejlődtek, de ezek az elvek alig változtak, legfeljebb
              lett még néhány belőlük).<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Az
              idő előtti optimalizálás pedig minden rossz gyökere ezen a
              Földön... :)<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Üdvözlettel,<o:p></o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Iván<o:p></o:p></span></p>
          <div>
            <p class="MsoNormal"
              style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span
style="font-size:9.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">István
                  Ketler<br>
                </span></b><span
style="font-size:9.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Senior
                Consultant</span><span style="color:#1F497D"><o:p></o:p></span></p>
            <p class="MsoNormal"
              style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Lufthansa
                Systems Hungaria Kft.
                <br>
                Development Center Pest <br>
                Neumann János u. 1/e<br>
                1117 Budapest<br>
                Hungary <o:p></o:p></span></p>
            <p class="MsoNormal"
              style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Tel:
                +36 1 887-2815
                <br>
                Fax: +36 1 887-2977<br>
                Mobile: +36 30 600-4936 </span><span
                style="color:#1F497D"><o:p></o:p></span></p>
            <p class="MsoNormal"
              style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Room:
                Infopark E, Room LH2-24
              </span><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p></o:p></span></p>
            <p class="MsoNormal"><span
style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">e-mail:
                <a moz-do-not-send="true"
                  href="mailto:istvan.ketler@lhsystems.com">istvan.ketler@lhsystems.com</a>
                <br>
                Internet: <a moz-do-not-send="true"
                  href="http://www.lhsystems.hu/">www.LHsystems.hu</a></span><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p></o:p></span></p>
          </div>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
          <div>
          </div>
        </div>
      </div>
      <div>
        <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> </p>
        <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span
            style="FONT-SIZE: 8pt; COLOR: gray; FONT-FAMILY: Arial">Sitz
            der Gesellschaft / Corporate Headquarters: </span><span
            style="FONT-SIZE: 8pt; COLOR: gray; FONT-FAMILY: Arial;
            mso-ansi-language: EN-GB" lang="EN-GB">Lufthansa Systems
            Hungaria Kft, Budapest, Fövarosi Birosag 01-09-463417<br>
          </span><span style="FONT-SIZE: 8pt; COLOR: gray; FONT-FAMILY:
            Arial">Geschaeftsfuehrung / Management Board: Monika Houck</span></p>
        <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><br>
        </p>
        <div class="WordSection1">
          <div>
            <div style="border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"
                    lang="EN-US">From:</span></b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"
                  lang="EN-US"> <a class="moz-txt-link-abbreviated" href="mailto:javalist-bounces@lists.javaforum.hu">javalist-bounces@lists.javaforum.hu</a>
                  [<a class="moz-txt-link-freetext" href="mailto:javalist-bounces@lists.javaforum.hu">mailto:javalist-bounces@lists.javaforum.hu</a>]
                  <b>On Behalf Of </b>Peter Verhas<br>
                  <b>Sent:</b> Wednesday, July 25, 2012 12:23 PM<br>
                  <b>To:</b> Java lista<br>
                  <b>Subject:</b> Re: [Javalist] Segítség! Java7
                  compiler BUG???<o:p></o:p></span></p>
            </div>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Mesélni nem szeretek, illetve igen, de az
            a gyereknevelés vagy a csajozás témaköre, ez meg egy szakmai
            fórum, ahol a kőkemény tények számítanak. Persze szellemileg
            nagyon fel tud frissíteni egy olyan téma, hogy jobb-e
            exception-t dobni, vagy inkább null-t visszaadni egy
            metódusból amennyiben abból a szempontból vizsgáljuk meg,
            hogy melyik eredményez a hívó oldalon olvashatóbb kódot. Ez
            mindaddig szubjektív, amíg nem végzünk mérést sok átlagos
            programozón, definiált metrikával, ami méri, hogy mennyire
            olvasható a kód. Gyakorlatilag ez kivitelezhetetlen, ezért
            ilyenkor a common sense dönt; illetve az idő, ami éveket
            jelent. Idővel kiderül, hogy mi a jó, mi a rossz, és sok
            minden marad azon a mezsgyén, amire a legmegfelelőbb szó a
            "megfelelő".<o:p></o:p></p>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
          </div>
          <div>
            <p class="MsoNormal">Tipikusan például ilyen a singleton.
              Baromi jól el lehet vitázni, hogy a singleton pattern,
              vagy antipattern (talán erről is írok majd egy
              blogbejegyzést, meg ezekből a hosszabb levelekből is), de
              leginkább azt lehet mondani, hogy nem rossz. Megfelelő.
              Arra amire.<o:p></o:p></p>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">A tények azonban makacs dolgok, és ha
                mégoly szép kódot is eredményez egy programozási
                módszertan, ha használhatatlan  a kód, ami az alapján
                készül, akkor az nem egy jó pattern (ezt írtam az előző
                levelemben is, kedves néném...) Anno ezen halt el az
                Algol60 meg az Algol68 is: nem volt olyan gép, ami le
                tudta volna fordítani gyorsan és jól: maradt a FORTRAN a
                kor kódolóinak.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">Az a mondás, hogy ne dobjunk
                Exception-t, mert az lassú überel mindent. Hiába lesz
                szép és olvasható a kód ha egy null-t visszaadó metódus
                1000-szer gyorsabb, mint egy olyan, amelyik egy 'new
                Exception()' -t dob. (kb. ez az arány, beleértve a
                try/catch kezelést is, olyan metódusoknál, amelyek
                egyébként nem csinálnak semmit).<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">Konkrétan csak egy 'return null'-t
                visszaadó metódust tíz milliószor meghívva 12ms alatt
                végez a gépem, míg ugyanennyiszer egy olyat, ami egy
                Exception-t dob 23ms-ig is eltart. Hogyan?<o:p></o:p></p>
            </div>
            <div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">VIGYÁZAT CSALOK!<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">Ha minden egyes alkalommal új
                  Exception-t hozok létre, akkor ez az érték már
                  11000ms, majdnem ezerszer lassabb. De ha ugyanazt az
                  Exception-t dobálom?<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">Ez azt mutatja, hogy teljesítmény
                  szempontjából nem az a kérdés, hogy null-t adjak-e
                  vissza, vagy kivétel dobásával jelezzem a speciális
                  visszatérési értéket, hanem azt, hogy nem feltétlenül
                  kell minden egyes esetben új Exception objektumot
                  létrehozni.<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">Persze azt is tudni kell, hogy
                  ilyen esetben az exception objektum stack trace része
                  használhatatlan, hiszen nem azt fogja tartalmazni ahol
                  akkor járt a program, amikor el lett dobva, hanem azt
                  amikor és ahol létre lett hozva. A kérdés az, hogy
                  kell-e nekünk a stack trace?<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">Ha olyan exception-t dobunk,
                  amelyik kivételes esetet jelez, tipikusan emberi
                  beavatkozást fog igényelni, meg kell hogy jelenjen a
                  log-ban a stack trace, hogy lehessen tudni, hogy
                  honnan lett dobva, akkor létre kell hozni egy új
                  exception objektumot, tipikusan a szokásos<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">throw new Exception()<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">pattern szerint. Amikor ezt tesszük
                  a programnak már úgyis betették a kaput, a
                  teljesítménynek nem számít, hogy a szerver X+12ms vagy
                  X+12mp alatt áll le (itt X az az idő ami még ezen
                  kívül kell a leálláshoz).<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">Ha viszont olyan kivételt dobunk,
                  ami nem különleges helyzet, csak jelezni akarjuk
                  például, hogy nincs több adat, vagy nincs keresett
                  adat, akkor (ha egyébként ez megfelel az ízlésünknek,
                  és minden egyéb feltételnek) csak a teljesítmény
                  szempontokat figyelembe véve dobhatunk egy private
                  static final változóban tárolt exception-t. A metódus
                  futási idejének csak kis része lesz (mondjuk 1%-a) a
                  visszatérés maga, így ha ez kétszer annyi időt vesz
                  igénybe a hívó oldalon, akkor fél százalékkal nőtt a
                  metódus bruttó futási ideje (bruttó alatt a hívási
                  oldali költségeket is figyelembe vesszük,
                  try/catch/finally és társai).<o:p></o:p></p>
              </div>
              <div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
              <div>
                <p class="MsoNormal">Ez tehát nem támasztja alá, hogy ne
                  dobjunk exception-t nem kivételes helyzetben. Kicsit
                  lassabb, de elviselhető. Ezzel némileg ellentmondok az
                  Effective Java könyvnek, de nem lehet vele vitázni,
                  mert csak annyit ír, hogy "egy száz elemű tömbnél az
                  én gépemen kétszer annyi ideig tart". Ez nem precíz.
                  Hidd el neki. Vagy ne hidd el, hanem mérd meg! Én erre
                  az utóbbira szavazok: a konkrét méréseket, meg kódot
                  majd felrakom a blogra, és továbbra is folyhat arról a
                  vita, hogy melyik a szebb pattern: null-t visszaadni,
                  vagy exception-t dobni (és persze van egy harmadik
                  pattern is, ami azt mondja, hogy legyen hasNext()
                  kinézetű metódus).<o:p></o:p></p>
                <div>
                  <p class="MsoNormal"><o:p> </o:p></p>
                  <div>
                    <div>
                      <div>
                        <div>
                          <p class="MsoNormal"><span
                              class="apple-style-span"><span
style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#888888">--</span></span><span
style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#888888"><br>
                              <span class="apple-style-span">Verhás
                                Péter</span><br>
                              <span class="apple-style-span"><a
                                  moz-do-not-send="true"
                                  href="mailto:peter@verhas.com">peter@verhas.com</a></span><br>
                              <span class="apple-style-span">+36(30)9306805</span><br>
                              <span class="apple-style-span">skype:
                                verhas</span></span><span
style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black"><o:p></o:p></span></p>
                        </div>
                      </div>
                      <p class="MsoNormal"><span
style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black"><o:p> </o:p></span></p>
                    </div>
                    <p class="MsoNormal"><span
style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black"><br>
                        <br>
                      </span><o:p></o:p></p>
                  </div>
                  <p class="MsoNormal"><o:p> </o:p></p>
                  <div>
                    <div>
                      <p class="MsoNormal">On 2012.07.25., at 10:50,
                        István Székely wrote:<o:p></o:p></p>
                    </div>
                    <p class="MsoNormal"><br>
                      <br>
                      <o:p></o:p></p>
                    <div>
                      <p class="MsoNormal">Sziasztok!<br>
                        <br>
                        Péter, erről légy szíves mesélj, mert úgy érzem,
                        lemaradtam valamiről.<br>
                        <br>
                        A kivételkezelés Javaban is lassú (volt?). Ennek
                        oka pontosan a stack trace összeállítása. A
                        hívási lánc bejárása és a stack trace
                        összeállítása igen drága művelet. Pont ebből az
                        okból javasolja Joshua Bloch is, hogy
                        kivételkezelést ne használjunk vezérlési
                        szerkezetek helyett. Emiatt nem jó az sem, hogy
                        az említett JPA metódus is kivételt dob null
                        visszaadása helyett (persze emellett is lehet
                        érvelni, és hajlamos is vagyok elfogadni, de az
                        most más téma).<br>
                        <br>
                        Ahonnan van: Effective Java, 2nd ed<br>
                        Item 57: Use exceptions only for exceptional
                        conditions<br>
                        <br>
                        Üdv,<br>
                        Stivi<br>
                        <br>
                        <br>
                        On 2012-07-24 23:26, Peter Verhas wrote:<br>
                        <br>
                        <o:p></o:p></p>
                      <p class="MsoNormal">Technológiai okok miatt C++
                        és C# (általánosan .NET) környezetben nem
                        szeretünk exception-t dobni (én magam
                        programozni sem szeretek ezekben a
                        környezetekben, nem is tudok (nagyon), hát még
                        kivételt dobni). Ezekben a környezetekben a
                        kivétel dobása drága, egészen más a kivételek
                        szerkezete, és ezért nem is ad megfelelő
                        információt. Tipikusan nincs benne a stack
                        trace, ezért ha egy szinttel feljebb, mint
                        ahonnan dobták nem kapjuk el, akkor már nem is
                        lehet tudni, hogy honnan dobták. Akkor meg már
                        olcsóbb futási időben a megfelelő hibakód
                        visszaadása, és ennek nagy hagyománya van unix C
                        és Windows C programozási környezetben, régen
                        bevált. [Megjegyzés: ennek a bekezdésnek az
                        egyik fele nem első kézből való információ, csak
                        beszélgettem .NET-es kollégákkal. A másik fele
                        viszont ezer évvel ezelőtti C programozási
                        emlékek megmaradt halvány foszlányai.]<o:p></o:p></p>
                      <blockquote
                        style="margin-top:5.0pt;margin-bottom:5.0pt">
                        <p class="MsoNormal"><o:p> </o:p></p>
                      </blockquote>
                      <blockquote
                        style="margin-top:5.0pt;margin-bottom:5.0pt">
                        <p class="MsoNormal">A Java egészen más.
                          Java-ban az exception hordozza a stack trace-t
                          (vagy nem, de inkább igen, mint nem), és ebben
                          nagyon sok szimbolikus információ benne van.
                          Nem kell ott elkapni, ahol dobják, vagy egy
                          szinttel feljebb, mert minden szükséges
                          információ benne van, és ezért elég ha ott
                          kapjuk el, ahol kezelni tudjuk. Ezért lett
                          egyébként kitalálva a hiba dobás, és
                          véleményem szerint a .NET környezet az
                          exception dobás, mint pattern
                          funkcionalitásának egy részét feláldozta a
                          teljesítmény oltárán, amit viszont mostanra
                          (Java6, 7) kezd túlhaladni az idő.<o:p></o:p></p>
                      </blockquote>
                      <blockquote
                        style="margin-top:5.0pt;margin-bottom:5.0pt">
                        <p class="MsoNormal"><o:p> </o:p></p>
                      </blockquote>
                      <p class="MsoNormal"><br>
                        _______________________________________________<br>
                        Javalist mailing list<br>
                        <a moz-do-not-send="true"
                          href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
                        <a moz-do-not-send="true"
                          href="http://lists.javaforum.hu/mailman/listinfo/javalist">http://lists.javaforum.hu/mailman/listinfo/javalist</a><o:p></o:p></p>
                    </div>
                  </div>
                  <p class="MsoNormal"><o:p> </o:p></p>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Javalist mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a>
<a class="moz-txt-link-freetext" href="http://lists.javaforum.hu/mailman/listinfo/javalist">http://lists.javaforum.hu/mailman/listinfo/javalist</a>
</pre>
    </blockquote>
    <br>
    <br>
  </body>
</html>