Error Handling
Virheiden käsittely on tärkeä osa kestävien verkkosovellusten kehittämistä. webforJ:ssä virheiden käsittely on suunniteltu joustavaksi ja mukautettavaksi, jolloin kehittäjät voivat käsitellä poikkeuksia tavalla, joka parhaiten sopii heidän sovelluksensa tarpeisiin.
Yleiskatsaus
webforJ:ssä virheiden käsittely keskittyy ErrorHandler
-rajapintaan. Tämä rajapinta mahdollistaa kehittäjien määritellä, miten heidän sovelluksensa reagoi, kun poikkeuksia tapahtuu suorituksen aikana. Oletuksena webforJ tarjoaa GlobalErrorHandler
in, joka käsittelee kaikki poikkeukset yleisellä tavalla. Kehittäjät voivat kuitenkin luoda mukautettuja virheiden käsittelijöitä tiettyjä poikkeuksia varten tarjotakseen tarkemmin kohdennettuja vastauksia.
Virheiden käsittelijöiden löytö ja käyttö
webforJ käyttää Java:n Service Provider Interface (SPI) -mekanismia virheiden käsittelijöiden löytämiseen ja lataamiseen.
Löytöprosessi
- Palvelun rekisteröinti: Virheiden käsittelijät rekisteröidään
META-INF/services
-mekanismin avulla. - Palvelun lataaminen: Sovelluksen käynnistyessä webforJ lataa kaikki luokat, jotka on lueteltu tiedostossa
META-INF/services/com.webforj.error.ErrorHandler
. - Virheiden käsittely: Kun poikkeus tapahtuu, webforJ tarkistaa, onko kyseiselle poikkeukselle olemassa virheiden käsittelijää.
Käsittelijän valinta
- Jos poikkeukselle on olemassa erityinen käsittelijä, sitä käytetään.
- Jos erityistä käsittelijää ei löydy, mutta mukautettu globaali virheiden käsittelijä
WebforjGlobalErrorHandler
on määritelty, sitä käytetään. - Jos kumpaakaan ei löydy, oletusarvoista
GlobalErrorHandler
-käsittelijää käytetään.
ErrorHandler
-rajapinta
ErrorHandler
-rajapinta on suunniteltu käsittelemään virheitä, jotka tapahtuvat webforJ-sovelluksen suorituksen aikana. Hakemukset, jotka haluavat hallita tiettyjä poikkeuksia, tulisi toteuttaa tämä rajapinta.
Metodit
onError(Throwable throwable, boolean debug)
: Kutsutaan, kun virhe tapahtuu. Tämän metodin tulisi sisältää logiikka virheen käsittelemiseksi.showErrorPage(String title, String content)
: Oletusmetodi, joka näyttää virhesivun annetulla otsikolla ja sisällöllä.
Nimeämiskäytäntö
Toteuttavan luokan on oltava nimetty sen käsittelemän poikkeuksen mukaan, ja sen lopussa on oltava ErrorHandler
. Esimerkiksi, jotta NullPointerException
-poikkeus voitaisiin käsitellä, luokan on oltava nimeltään NullPointerExceptionErrorHandler
.
Rekisteröinti
Mukautettu virheiden käsittelijä on rekisteröitävä tiedostoon META-INF/services/com.webforj.error.ErrorHandler
, jotta webforJ voi löytää ja käyttää sitä.
Mukautetun virheiden käsittelijän toteuttaminen
Seuraavat vaiheet kuvaavat mukautetun virheiden käsittelijän toteutusta tiettyä poikkeusta varten:
Vaihe 1: Luo virheiden käsittelijäluokka
Luo uusi luokka, joka toteuttaa ErrorHandler
-rajapinnan ja on nimetty sen käsittelemä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 = "Virheellisesti käytettiin null-arvoa, missä objekti tarvitaan.";
showErrorPage(title, content);
}
}
showErrorPage()
-metodishowErrorPage
-metodi on hyödyllinen metodi, joka käyttää webforJ:n API:a lähettääkseen annetun HTML-sisällön ja sivun otsikon selaimelle, jolloin virhesivu näytetään. Kun poikkeus tapahtuu eikä sovellus kykene palautumaan, webforJ:n komponentteja ei voida enää käyttää mukautetun virhesivun luomiseen. Kuitenkin Page
API pysyy käytettävissä, mikä mahdollistaa kehittäjän ohjata tai näyttää virhesivun viimeisenä yrityksenä.
Vaihe 2: Rekisteröi virheiden käsittelijä
Luo tiedosto nimeltä com.webforj.error.ErrorHandler
sovelluksesi META-INF/services
-hakemistoon. Lisää tähän tiedostoon virheiden käsittelijäsi täysi nimi.
Tiedosto: META-INF/services/com.webforj.error.ErrorHandler
com.example.error.NullPointerExceptionErrorHandler
Nyt, aina kun NullPointerException
heitetään, webforJ valitsee rekisteröidyn käsittelijäsi ja suorittaa sen logiikan virheen käsittelemiseksi.
AutoService
in käyttäminen rekisteröinnin yksinkertaistamiseksi
Kehittäjät voivat helposti unohtaa päivittää tai määrittää palvelukuvaajia oikein. Käyttämällä Googlen AutoService
:a voit automatisoida META-INF/services/com.webforj.error.ErrorHandler
-tiedoston generaation. Sinun tarvitsee vain merkitä virheiden käsittelijä AutoService
-annotaatiolla. Voit lukea lisää AutoService:sta täältä.
@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 = "Virheellisesti käytettiin null-arvoa, missä objekti tarvitaan.";
showErrorPage(title, content);
}
}
GlobalErrorHandler
-luokka
GlobalErrorHandler
on oletusvirheiden käsittelijä, jonka webforJ tarjoaa. Se toteuttaa ErrorHandler
-rajapinnan ja tarjoaa yleistä virheiden käsittelyä.
Käyttäytyminen
- Lokitus: Virheet kirjataan sekä palvelimen että selaimen konsoliin.
- Virhesivun näyttäminen: Riippuen virheen jäljittämismoodista, virhesivu näyttää pinojäljen tai yleisen virheilmoituksen.
Mukautetun globaalin virheiden käsittelijän määrittäminen
Mukautetun globaalin virheiden käsittelijän määrittämiseksi sinun on luotava uusi virheiden käsittelijä, joka on nimetty WebforjGlobalErrorHandler
. Seura sitten vaiheita virheiden käsittelijöiden rekisteröimiseksi kuten aiemmin on selitetty. Tässä tapauksessa webforJ etsii ensin mukautettuja virheiden käsittelijöitä hoitamaan poikkeuksia. Jos niitä ei löydy, webforJ turvautuu mukautettuun globaaliin virheiden käsittelijään.
Jos useita WebforjGlobalErrorHandler
-luokkia on rekisteröity, webforJ valitsee ensimmäisen