首頁  >  文章  >  Java  >  java如何拋出適合抽象的異常

java如何拋出適合抽象的異常

PHPz
PHPz轉載
2023-04-28 14:40:101456瀏覽

拋出適合抽象的例外

拋出的例外應該與呼叫者執行的任務有連結。此項介紹異常轉換(捕獲異常並拋出另一個)和異常鏈(將異常包裝在新的異常中以保留異常的因果鏈)。

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刪除