HTML

Szolgálati közlemény

2009.10.21. 10:48 progos

A blog elköltözött a tumblr-re. Minden tisztelet a blog.hu-é, de elcsábultam.

Szólj hozzá!

Megmondani, mit kell tenni

2009.10.20. 11:00 progos

Kiegészítés az előző bejegyzéshez

A hibaüzenet nem arra való, hogy megmondjuk, milyen hiba történt. A felhasználó azzal többnyire nem sokra megy. Akkor jó a hibaüzenet, ha a probléma leírása mellett segít abban, hogy mit kell tenni a hiba megszüntetéséhez.

Az előző kódból egy másik részlet:

if (!this.uploadFileName.endsWith(".csv")) {
    addActionError("A dokumentum formátuma nem megfelelő");
    return ERROR;
}

Esettanulmány 1: kedves ügyfél megkapja az értesítést arról, hogy átveheti az új funkciót. Nekiáll tesztelni. Kapott egy url-t, egy leírást arról, hogy a feltöltendő táblázatot hogy kell kitölteni és egy "excel-minta.xls" fájlt. Beüti a böngészőjébe a megadott címet, belép, feltölti a mintát. A program azt mondja: "A dokumentum formátuma nem megfelelő". Fasza.
-"HOGY TESZTELTEK EZEK?"
Habitusától függő stílusban jelez, hogy használhatatlan a program. Garantáltan! Más eredménye nem lehet a tesztnek.

...
} catch (final IOException e) {
    addActionError("Hiba történt a fájl olvasása közben!");
    return ERROR;
}

Esettanulmány 2: az előző problémát telefonon gyorsan lekezeljük, új dokumentációt küldünk, javítjuk a hibaüzenetet. Ügyfél folytatja a tesztelést. Tfh a szerveren nem írható a /tmp, ahova a rendszer mentené a feltöltött fájlokat. Üzenet a felhasználónak az űrlap fölött: "Hiba történt a fájl olvasása közben!". Király. Admin nem kapott értesítést, ügyfél nem kapott segítséget. Tudja, mi a probléma: "Hiba történt a fájl olvasása közben!". Ki vagyunk segítve.

Bonyolítja a problémát, hogy az IOException nyilvám ezer okból, ezer helyről jöhet a fekete dobozból. Igyekezni kell szétválasztani.

Szólj hozzá!

Címkék: usability hibakezelés

Megmondani, mi a hiba

2009.10.20. 09:05 progos

Az alábbi kódrészlet egy CSV-feltöltő funkció kódja. A probléma a vastaggal szedett résszel van.

        try {
            if (!this.uploadFileName.endsWith(".csv")) {
                addActionError("A dokumentum formátuma nem megfelelő");
                return ERROR;
            }
            ellenoriz();
            feltolt();
            return SUCCESS;
        } catch (final IOException e) {
            addActionError("Hiba történt a fájl olvasása közben!");
            return ERROR;
        } catch (final Exception e) {
            LOGGER.error(e);
            addActionError(e.getMessage());
            return ERROR;
        }

Tesztelés közben a következő hibaüzenetet kaptam a programból:
1

Mi is történt?

A fejlesztő nem nézte végig, hogy a blokk utasításai milyen esetben milyen hibát dobnak. Elintézte azzal, hogy valamilyen "Exception"-t. Nyilván munka végignézni a javadoc-ot, saját modulban a kódot, de a felhasználónak esélye sincs ilyesmire. Ahhoz, hogy közöljük vele, mit kell tennie, nekünk is utána kell néznünk, milyen hibák léphetnek fel.

Ha kiderítettük, az Exception milyen leszármazottait dobhatják a hívott metódusok, máris egyenként fülön lehet őket csípni és olyan információt adni a felhasználónak, amivel többet tud kezdeni, mint hogy felhívja a fejlesztőt.

Szólj hozzá!

Címkék: java hibakezelés

a NullPointerException transzparens kezelése

2009.10.13. 15:22 progos

Tajti Ákos kitűnő bejegyzése tovább

Szólj hozzá!

Halasztott hiba

2009.07.30. 15:38 progos

Ma levelet küldünk. A címzett elengedhetetlen. A többi most nem érdekes.

// ... private String feladoCim; private String feladoNev; private String kodolas; // ... public void kuld(final Collection<Felhasznalo> cimzettek) throws UnsupportedEncodingException, MessagingException { final MimeMessage m = this.mailSender.createMimeMessage(); m.setFrom(new InternetAddress(feladoCim, feladoNev, kodolas)); this.mailSender.send(m); }

hozzá a spring konfig:

<property name="feladoCim" value="jakab@gipsz.hu" /> <property name="feladoNev" value="Gipsz Jakab" /> <property name="kodolas" value="UTF-8" />

Megy? Megy. Örülünk? Túrót. Faszán konfigurálható, na de miért kell "ismeretlen kódolás" hibával vakarózni a hívóban? UTF-8 vagy van, vagy nincs. Ha nincs, az nem a híváskor derül ki, hanem induláskor.

// ... private InternetAddress felado; // ... public void kuld(final Collection cimzettek) throws MessagingException { final MimeMessage m = this.mailSender.createMimeMessage(); m.setFrom(this.felado); this.mailSender.send(m); }

az új spring konfig:

<property name="felado"> <bean class="javax.mail.internet.InternetAddress"> <constructor-arg index="0" value="jakab@gipsz.hu" /> <constructor-arg index="1" value="Gipsz Jakab" /> <constructor-arg index="2" value="UTF-8" /> </bean> </property>

A spring a rendszer indításánál kipróbálja, hogy létrehozható-e a babszem. Ha nem, üvölt. In-dí-tás-kor! Nem a felhasználóval együtt. Az adminnal kettesben. Őt meg ezért fizetik.

Szólj hozzá!

Címkék: java oop spring hibakezelés inicializálás javamail

Hello World

2009.07.30. 13:55 progos

Egy árverő rendszer utolsó simításait végzem. A rendszert jól megterveztük, összeszokott, lojális, szorgalmas a csapat, mégis két napja fúrok-faragok-szögelek-átalakítok. Olyan hibákat javítgatok, amiknek az elkerüléséhez nem kéne projektenként tervezni, csak általános szabályokat betartani. Ezekről a józan ésszel belátható, könnyen betartható szabályokról fog szólni ez a blog.

Szólj hozzá!

Címkék: köszöntő lelkifröccs

süti beállítások módosítása