Maison  >  Article  >  Java  >  Comment Java génère des exceptions adaptées à l'abstraction

Comment Java génère des exceptions adaptées à l'abstraction

PHPz
PHPzavant
2023-04-28 14:40:101420parcourir

Lance d'exceptions adaptées à l'abstraction

Les exceptions levées doivent être liées à la tâche effectuée par l'appelant. Cet élément introduit la conversion d'exception (capter une exception et en lancer une autre) et le chaînage d'exceptions (encapsuler une exception dans une nouvelle exception pour préserver la chaîne causale de l'exception).

private void serializeBillingDetails(BillingResult billingResult,
        BillingDetailsType billingDetails) {
 
    try {
        final JAXBContext context = JAXBContext
                .newInstance(BillingdataType.class);
        final ByteArrayOutputStream out = new ByteArrayOutputStream();
        final Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty("jaxb.formatted.output", Boolean.FALSE);
        final BillingdataType billingdataType = new BillingdataType();
        billingdataType.getBillingDetails().add(billingDetails);
        marshaller.marshal(factory.createBillingdata(billingdataType), out);
        final String xml = new String(out.toByteArray(), "UTF-8");
        billingResult.setResultXML(xml.substring(
                xml.indexOf("<Billingdata>") + 13,
                xml.indexOf("</Billingdata>")).trim());
        billingResult.setGrossAmount(billingDetails.getOverallCosts()
                .getGrossAmount());
        billingResult.setNetAmount(billingDetails.getOverallCosts()
                .getNetAmount());
    } catch (JAXBException | UnsupportedEncodingException ex) {
        throw new BillingRunFailed(ex);
    }
}

La méthode ci-dessus capture l'exception JAXBException 和 UnsupportedEncodingException,并重新抛出一个适合方法抽象级别的新异常。新的 BillingRunFailed et encapsule l'exception d'origine. C'est donc un bon exemple de chaînage d'exceptions. L’avantage du chaînage d’exceptions est qu’il préserve les exceptions de bas niveau qui peuvent être utiles lors du débogage des problèmes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer