首页 > 解决方案 > 使用 try catch 强制类之间的通信

问题描述

我正在开发一个用于跟踪类别(例如杂货、账单、外出等)付款的 android 个人财务应用程序。每个类别都有预算限制。我想让用户能够通过该限制,并通过降低他们的预算限制让其他类别“帮助”花费超过此限制的钱。(我称之为处理溢出)

我现在所做的是,每次对可能导致此类溢出的类别实例进行更改时,我都会返回一个布尔值,该布尔值指定是否存在溢出。多个类别存储在跟踪器类中。当我对某个类别进行更改时,我会检查此返回值以查看是否存在溢出并相应地进行处理。

这感觉很不安全,因为每次我应该检查溢出时我都必须牢记在心。我在想我可以使用 try catch 来执行此操作并从类别类中抛出一个定制的“OverflowException”,然后它会被跟踪器类捕获并相应地处理。这样,代码将迫使我在需要时处理溢出。像这样使用 try catch 是个好主意吗?

我现在做的返回溢出检查的示例,类别类:

public boolean makePayment(Payment payment) {
        history.addTransaction(payment);
        // Spent changes, there might be overflow.
        spent += payment.getAbsValue();

        return hasOverflow();
    }

处理溢出示例,CategoryTracker 类:

public void makePayment(Category category, Payment payment, boolean assign) {
        if( (category == null) || (payment == null) ) { return; }
        if(history.hasTransaction(payment)) { return; }

        if(assign) {
            assignCategory(category, payment);
        }
        history.addTransaction(payment);
        // Spent changes, handle overflow if it's the case.
        if(category.makePayment(payment)) {
            adapter.handleOverflow(category);
        }
    }

标签: javatry-catch

解决方案


推荐阅读