Proiectarea mesajelor de eroare bune este dificila. In Java, cel mai adesea, dezvoltatorii se bazeaza doar pe aruncarea de exceptii cu un text mic. In cele mai bune cazuri, mesajul de eroare este suficient de inteles, dar exista o multime de cazuri in care este ineficient.

Un mesaj de eroare bun ar trebui sa descrie:

  • cat de grava este problema (poate fi ignorata in siguranta?)
  • ce problema a fost intampinata. Aici se opresc de obicei dezvoltatorii. De exemplu, „foo este nul”
  • unde a fost intalnita problema (in ce context, de ex. ce fisier a fost compilat, ce numar de linie, …)
  • de ce s- a intamplat problema

si, in cele din urma, un set de solutii posibile la problema.

Exceptiile nu sunt bune pentru a rezolva acest lucru, deoarece o exceptie descrie un esec in fluxul de executie a programului. Urmele stivei sunt bune pentru depanare, dar este rar ca unui utilizator ii pasa unde a aparut o problema in programul dvs .: cel mai probabil, ceea ce ii intereseaza este modul in care pot rezolva problema .

In consecinta, JDoctor ofera o biblioteca pentru a facilita proiectarea mesajelor de eroare bune, modelandu-le corect.

Aceasta biblioteca este in prezent in stadii experimentale, feedback-ul este binevenit.

Exemplu

Acesta este un exemplu al modului in care ati construi un nou descriptor de probleme folosind API-ul de comoditate:

ProblemBuilder.newBuilder (TasteProblem.INVALID_INGREDIENT, Severity.HIGH, “Pizza hawaiana”) .withShortDescription (“ananasul pe pizza nu este permis”) .deoarece (“bucataria italiana ar trebui respectata”) .withLongDescription (“Ananasul pe pizza ar fi puneti in pericol relatia dvs. cu oamenii pe care ii respectati. “) .documentedAt (” https://www.bbc.co.

jovencitasxxx ver pelis eroticas
porno español creampie maduras tocandose
me follo a abuela caliente
se folla a su hermana colegialas peludas
potro de bilbao porno interactivo gratis
xxx abuelas porno español de maduras
mamasxxx se corre en el coño de su hija
videos porno gratis caseros españolas follando en la playa
michelle jenner desnuda corridas anales
incestos gays superculos
recopilacion pajas videos porno para mujeres gratis
tetonas en español le pilla pajeandose
pornovideo super maduras
viendo como se follan a mi mujer joven folla por dinero
madresxxx inazuma eleven xxx
chupadas milf camara oculta
pelisxxx monica hoyos porno
presentadoras desnudas viejas cachondas
follando en español incesto en espanol
incesto subtitulado porno casadas españolas

uk/bitesize/articles/z2vftrd “) .addSolution (s -> s.withShortDescription) (” mancati ananas pentru desert “)) .addSolution (s -> s.withShortDescription (” opriti adaugarea de ananas la pizza “))

In practica, incurajam utilizatorii sa implementeze propria lor implementare a interfetei Problema (de exemplu extinderea clasei BaseProblem) si sa vina cu constructori topici care sunt specifici unei categorii de probleme.

De exemplu:

problemRecorder.recordNewProblem (problema -> problem.forType (classWithAnnotationAttached) .reportAs (ERROR) .withId (ValidationProblemId.INVALID_USE_OF_CACHEABLE_TRANSFORM_ANNOTATION) .withDescription (() – incorrect) ())) .happensBecause (() -> String.format (“Aceasta adnotare are sens doar pentru tipurile% s”, TransformAction.class.getSimpleName ())) .documentedAt (“validation_problems”, “invalid_use_of_cacheable_transform_annotation”) .addPossibleSolution „Eliminati adnotarea”)))

Atunci s-ar putea sa va intrebati cum ar trebui redat acest lucru. Ca intotdeauna, raspunsul este „depinde”. jdoctor este agnostic in ceea ce priveste redarea. Nu veti reda un mesaj in acelasi mod daca aveti o CLI, o interfata bogata sau un raport HTML. Pe scurt: redarea este responsabilitatea consumatorului a problemelor.

De exemplu, este posibil sa doriti sa colectati mai multe probleme, sa le sortati dupa categorie, apoi sa redati un mesaj scurt si sa spuneti ca explicatia completa este disponibila intr-un raport.

Cu toate acestea, pentru comoditate, jdoctor-utils ofera un renderer simplu si simplist. Iata un exemplu de iesire pentru primul exemplu:

Politia gatitoare te-a arestat: ananasul pe pizza nu este permis Unde? : Pizza hawaiana De ce? : bucataria italiana ar trebui respectata Detalii: Ananasul pe pizza ar pune in pericol relatia dvs. cu oamenii pe care ii respectati. Solutii posibile: – mancati ananas pentru desert – nu mai adaugati ananas la pizza Puteti afla mai multe despre aceasta problema la https://www.bbc.co.uk/bitesize/articles/z2vftrd

Module

Acest proiect consta din urmatoarele module publicate sub ID-ul grupului me.champeau.jdoctor:

  • jdoctor-core este principalul mosly API format din model
  • jdoctor-utils este un modul de comoditate care ofera constructorilor si randatorilor pentru probleme si solutii
  • jdoctor-bom este o platforma utilizata pentru alinierea versiunilor de dependenta

Folosirea bibliotecii in proiectul dvs. preferat

Pentru a utiliza jdoctor cu Gradle:

dependente {implementare („me.champeau.jdoctor: jdoctor-core: 0.1”)}

De la Maven:

<dependencies> <dependency> <groupId> me.champeau.jdoctor </groupId> <artifactId> jdoctor-core </artifactId> <version> 0.1 </version> </dependency> </dependencies>

Cladire

Rulati ./gradlew build