> Java > java지도 시간 > 본문

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

PHPz
풀어 주다: 2023-04-28 14:40:10
앞으로
1460명이 탐색했습니다.

추상화에 적합한 예외 발생

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

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿