Error Handling
Virheiden käsittely on keskeinen osa luotettavien verkkosovellusten kehittämistä. webforJ:ssä virheiden käsittely on suunniteltu joustavaksi ja mukautettavaksi, mikä mahdollistaa kehittäjien käsitellä poikkeuksia tavalla, joka parhaiten vastaa sovelluksen tarpeita.
Yleiskatsaus
webforJ:ssä virheiden käsittely perustuu ErrorHandler-rajapintaan. Tämä rajapinta antaa kehittäjille mahdollisuuden määrittää, miten heidän sovelluksensa reagoi, kun poikkeuksia esiintyy suorituksen aikana. Oletuksena webforJ tarjoaa GlobalErrorHandler-komponentin, joka käsittelee kaikki poikkeukset yleisellä tavalla. Kehittäjät voivat kuitenkin luoda mukautettuja virheenkäsittelykappaleita erityisiä poikkeuksia varten tarjotakseen räätälöidympiä vastauksia.
Virheenkäsittelykappaleiden löytäminen ja käyttäminen
webforJ hyödyntää Javassa olevaa Service Provider Interface (SPI) -mekanismia virheenkäsittelykappaleiden löytämisessä ja lataamisessa.
Löytämisprosessi
- Palvelun rekisteröinti: Virheenkäsittelykappaleet rekisteröidään
META-INF/services-mekanismin kautta. - Palvelun lataaminen: Sovelluksen käynnistämisen yhteydessä webforJ lataa kaikki luokat, jotka on listattu
META-INF/services/com.webforj.error.ErrorHandler. - Virheiden käsittely: Kun poikkeus esiintyy, webforJ tarkistaa, onko olemassa virheenkäsittelykappaletta tuolle erityiselle poikkeukselle.
Käsittelijän valinta
- Jos poikkeukselle on olemassa erityinen käsittelijä, sitä käytetään.
- Jos erityistä käsittelijää ei löydy, mutta mukautettu ylätason virheenkäsittelykappale
WebforjGlobalErrorHandleron määritelty, sitä käytetään. - Jos kumpikaan ei löydy, käytetään oletus
GlobalErrorHandler-kappaletta.
ErrorHandler-rajapinta
ErrorHandler-rajapinta on suunniteltu käsittelemään virheitä, jotka esiintyvät webforJ-sovelluksen suorituksen aikana. Sovellusten, jotka haluavat hallita erityisiä poikkeuksia, tulee toteuttaa tämä rajapinta.
Menetelmät
onError(Throwable throwable, boolean debug): Kutsutaan, kun virhe esiintyy. Tämän menetelmän tulisi sisältää logiikka poikkeuksen käsittelemiseksi.showErrorPage(String title, String content): Oletusmenetelmä, joka näyttää virhesivun annetuilla nimellä ja sisällöllä.
Nimikkeistön malli
Toteuttavan luokan on oltava nimetty käsiteltävän poikkeuksen mukaan, lisäyksellä ErrorHandler. Esimerkiksi NullPointerException-poikkeuksen käsittelemiseksi luokan tulisi olla nimeltään NullPointerExceptionErrorHandler.
Rekisteröinti
Mukautettu virheenkäsittelykappale on rekisteröitävä META-INF/services/com.webforj.error.ErrorHandler-tiedostoon, jotta webforJ voi löytää ja käyttää sitä.
Mukautetun virheenkäsittelykappaleen toteuttaminen
Seuraavat vaiheet kuvaavat mukautetun virheenkäsittelykappaleen toteuttamista tiettyä poikkeusta varten:
Vaihe 1: Luo virheenkäsittelyluokka
Luo uusi luokka, joka toteuttaa ErrorHandler-rajapinnan ja on nimetty käsiteltävän poikkeuksen mukaan.
package com.example.error;
import com.webforj.error.ErrorHandler;
public class NullPointerExceptionErrorHandler implements ErrorHandler {
@Override
public void onError(Throwable throwable, boolean debug) {
// Mukautettu käsittelylogiikka NullPointerExceptionille
String title = "Null Pointer Exception";
String content = "Nolla-arvo kohtasi paikan, jossa objekti on vaadittu.";
showErrorPage(title, content);
}
}
showErrorPage()-menetelmäshowErrorPage-menetelmä on hyödyllinen menetelmä, joka käyttää webforJ API:a lähettääkseen annetut HTML-sisällöt ja sivun otsikon selaimelle, näyttäen virhesivun. Kun poikkeus esiintyy eikä sovellus kykene palautumaan, webforJ-komponentteja ei voi käyttää mukautetun virhesivun rakentamiseen. Kuitenkin Page-API on edelleen käytettävissä, mikä mahdollistaa kehittäjän ohjata tai näyttää virhesivun viimeisenä yrityksenä.
Vaihe 2: Rekisteröi virheenkäsittelykappale
Luo tiedosto nimeltä com.webforj.error.ErrorHandler sovelluksesi META-INF/services-hakemistoon. Lisää tämän tiedoston sisään virheenkäsittelyluokkasi täysimittainen nimi.
Tiedosto: META-INF/services/com.webforj.error.ErrorHandler
com.example.error.NullPointerExceptionErrorHandler
Nyt, aina kun NullPointerException esiintyy, webforJ valitsee rekisteröidyn käsittelijäsi ja suorittaa sen logiikan virheen käsittelemiseksi.
AutoService-käytön yksinkertaistaminen rekisteröinnissä
On helppoa, että kehittäjät unohtavat päivittää tai määrittää palvelun kuvastot oikein. Käyttämällä Googlen AutoService-työkalua voit automatisoida META-INF/services/com.webforj.error.ErrorHandler-tiedoston luomisen. Tarvitset vain merkitä virheenkäsittelykappale AutoService-annotaatiolla. Voit lukea lisää AutoServicestä täällä.
@AutoService(ErrorHandler.class)
public class NullPointerExceptionErrorHandler implements ErrorHandler {
@Override
public void onError(Throwable throwable, boolean debug) {
// Mukautettu käsittelylogiikka NullPointerExceptionille
String title = "Null Pointer Exception";
String content = "Nolla-arvo kohtasi paikan, jossa objekti on vaadittu.";
showErrorPage(title, content);
}
}
GlobalErrorHandler-luokka
GlobalErrorHandler on oletusvirheenkäsittelykappale, jonka webforJ tarjoaa. Se toteuttaa ErrorHandler-rajapinnan ja tarjoaa yleistä virheenkäsittelyä.
Käyttäytyminen
- Lokitus: Virheet tallennetaan sekä palvelimelle että selaimen konsoliin.
- Virhesivun näyttäminen: Virhesivulla näytetään pinojäljet tai yleinen virhesanoma riippuen virhetilan.
Mukautetun ylätason virheenkäsittelykappaleen määrittäminen
Mukautetun ylätason virheenkäsittelykappaleen määrittämiseksi sinun on luotava uusi virheenkäsittelykappale nimeltä WebforjGlobalErrorHandler. Seuraavaksi seuraa virheenkäsittelykappaleiden rekisteröinnin vaiheita, kuten aiemmin on selostettu. Tässä tapauksessa webforJ etsii ensin mahdolliset mukautetut virheenkäsittelykappaleet hallitsemaan poikkeuksia. Jos niitä ei löydy, webforJ siirtyy mukautettuun ylätason virheenkäsittelykappaleeseen.
Jos useita WebforjGlobalErrorHandler-kappaleita on rekisteröity, webforJ valitsee ensimmäisen.