Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用异常和重新抛出_Java_Try Catch_Throw_Throws - Fatal编程技术网

Java 使用异常和重新抛出

Java 使用异常和重新抛出,java,try-catch,throw,throws,Java,Try Catch,Throw,Throws,对于如何为getAmount方法执行此步骤,我感到困惑 此方法应读取其中一个JTextField中的金额,并将字段条目转换为数字。(我认为我正确地完成了这一步) 虽然当非数字 字段项转换为双精度,该方法无法处理异常,因为它 不知道正在处理哪个事务。但是,该方法必须捕获 NumberFormatException使运行时错误不会随错误一起发生 在DOS窗口中显示的消息。挡块必须抛出挡块 它捕获的异常。这是一个重新引发异常的示例。爪哇 运行时创建并抛出异常,但捕获异常的方法不会 有足够的信息来处理异

对于如何为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
块。如果所讨论的方法实际上不能以任何有意义的方式处理异常,那么它就没有必要捕获异常