Java 使用异常和重新抛出
对于如何为getAmount方法执行此步骤,我感到困惑 此方法应读取其中一个JTextField中的金额,并将字段条目转换为数字。(我认为我正确地完成了这一步) 虽然当非数字 字段项转换为双精度,该方法无法处理异常,因为它 不知道正在处理哪个事务。但是,该方法必须捕获 NumberFormatException使运行时错误不会随错误一起发生 在DOS窗口中显示的消息。挡块必须抛出挡块 它捕获的异常。这是一个重新引发异常的示例。爪哇 运行时创建并抛出异常,但捕获异常的方法不会 有足够的信息来处理异常,以便它将异常抛出给 叫它。Java 使用异常和重新抛出,java,try-catch,throw,throws,Java,Try Catch,Throw,Throws,对于如何为getAmount方法执行此步骤,我感到困惑 此方法应读取其中一个JTextField中的金额,并将字段条目转换为数字。(我认为我正确地完成了这一步) 虽然当非数字 字段项转换为双精度,该方法无法处理异常,因为它 不知道正在处理哪个事务。但是,该方法必须捕获 NumberFormatException使运行时错误不会随错误一起发生 在DOS窗口中显示的消息。挡块必须抛出挡块 它捕获的异常。这是一个重新引发异常的示例。爪哇 运行时创建并抛出异常,但捕获异常的方法不会 有足够的信息来处理异
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.text.NumberFormat;
public class AccountApplet extends JApplet implements ActionListener
{
// For West
public JLabel ai = new JLabel("Account ID ");
public JTextField aitf = new JTextField();
public JLabel ab = new JLabel("Account Balance ");
public JTextField abtf = new JTextField();
// For East
public JButton dp = new JButton ("Deposit");
public JTextField dptf = new JTextField();
public JButton wt = new JButton ("Withdraw");
public JTextField wttf = new JTextField();
// For South
public JLabel status = new JLabel("placeholder");
public void init()
{
this.setSize(400, 90);
//----------------------
// Set up the Structure
//----------------------
Container c = getContentPane();
JPanel b = new JPanel(new BorderLayout());
JPanel west = new JPanel(new GridLayout(2,2));
JPanel east = new JPanel(new BorderLayout());
JPanel depo_with = new JPanel(new GridLayout(2,2));
// Add BorderLayout to the container
c.add(b);
// Add everything to West
b.add(west, BorderLayout.WEST);
west.setBorder(new TitledBorder("Display Account Information"));
west.add(ai);
west.add(aitf);
aitf.setEditable(false);
west.add(ab);
west.add(abtf);
abtf.setEditable(false);
// Add everything to EAST
b.add(east, BorderLayout.EAST);
east.setBorder(new TitledBorder("Deposit or Withdrawl Funds"));
east.add(depo_with, BorderLayout.EAST);
depo_with.add(dptf);
depo_with.add(dp);
depo_with.add(wttf);
depo_with.add(wt);
dp.addActionListener(this);
wt.addActionListener(this);
// Add everything to SOUTH
b.add(status, BorderLayout.SOUTH);
refreshFields();
} // End intit
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == dp) // Executes if deposit was clicked
{
//getAmount(dptf);
status.setText("Deposit processed");
}
if (e.getSource() == wt) // Executes if withdraw was clicked
{
//getAmount(wttf);
status.setText("Withdraw processed");
}
} // End actionPerformed
public void refreshFields()
{
NumberFormat fmt = NumberFormat.getCurrencyInstance();
Account Account1 = new Account(1234, 1000.00);
aitf.setText("" + Account1.getId());
abtf.setText("" + fmt.format(Account1.getBalance()));
// diplays accound id and balance in left text fields
//should be called when the applet is first displayed and after each valid transaction
}
public double getAmount(JTextField tf) throws EmptyFieldException,
NumberFormatException,
NegativeAmountException
{
double withdraw = Double.parseDouble(dptf.getText());
// Next step
return withdraw;
} // End getAmount
} // End Class
这就是你想要的:
public double getAmount(JTextField tf) throws EmptyFieldException,
NumberFormatException,
NegativeAmountException
{
double withdraw;
// try to parse
try {
withdraw = Double.parseDouble(dptf.getText());
} catch (Exception e) {
// catch exception and do something about it
throw e;
}
// Next step
return withdraw;
} // End
所有这些代码都是证明您的问题所必需的吗?请阅读并提供答案。你的问题是什么?我在这段代码的任何地方都没有看到
catch
块。如果所讨论的方法实际上不能以任何有意义的方式处理异常,那么它就没有必要捕获异常