Java が抽象化に適した例外をスローする方法

PHPz
リリース: 2023-04-28 14:40:10
転載
1459 人が閲覧しました

抽象化に適した例外をスローする

スローされる例外は、呼び出し元によって実行されるタスクに関連している必要があります。この項目では、例外変換 (例外をキャッチして別の例外をスローする) と例外連鎖 (例外を新しい例外にラップして例外の因果関係の連鎖を保持する) を紹介します。

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート