java - 使用 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);
}
}
解决方案
推荐阅读
- java - 需要帮助延迟 javafx 应用程序
- assembly - 我对这个算术运算符感到困惑
- c# - 从文本中选择字母并将它们放入列表中
- r - 在这些数据集之间使用 R 进行深度学习导致 MAE 结果不同的原因可能是什么?
- react-native - 在 React Native 中处理刷新令牌
- python - ValueError:差异需要至少一维的输入
- node.js - 不能改变从猫鼬查询返回的对象吗?
- c++ - 唯一的 ptr 将所有权转移到包含对象的方法
- html - How to insert background color, font type and color, etc in embed code?
- prestashop - Prestashop - fields_value added only single char