>Java >java지도 시간 >Java가 추상화에 적합한 예외를 발생시키는 방법

Java가 추상화에 적합한 예외를 발생시키는 방법

PHPz
PHPz앞으로
2023-04-28 14:40:101499검색

추상화에 적합한 예외 발생

발생된 예외는 호출자가 수행한 작업과 관련되어야 합니다. 이 항목에서는 예외 변환(예외를 포착하고 다른 예외를 발생시키는 것)과 예외 연결(예외의 원인 체인을 보존하기 위해 새 예외에 예외를 래핑하는 것)을 소개합니다.

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);
    }
}

위 메서드는 JAXBException 和 UnsupportedEncodingException,并重新抛出一个适合方法抽象级别的新异常。新的 BillingRunFailed 예외를 캡처하고 원래 예외를 래핑합니다. 따라서 이것은 예외 체인의 좋은 예입니다. 예외 체인의 이점은 문제 디버깅에 도움이 될 수 있는 낮은 수준의 예외를 보존한다는 것입니다.

위 내용은 Java가 추상화에 적합한 예외를 발생시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제