Ich bin verwirrt, wie Sie diesen Schritt für meine getAmount Methode sollteMit Ausnahmen und wieder wirft
Diese Methode tun, um die Menge in einen der JTextFields und wandeln den Feldeintrag zu einer Reihe lesen. (Ich glaube, ich diesen Schritt tat richtig)
Obwohl ein Number in diesem Verfahren auftritt, wenn ein nicht-numerischer Feldeintrag zu einem Doppel umgewandelt wird, kann das Verfahren nicht die Ausnahme verarbeiten, da es weiß nicht, welche Transaktion wird verarbeitet. Die Methode muss jedoch die NumberFormatException fangen, damit ein Laufzeitfehler nicht auftritt, mit Fehler Nachrichten, die in dem DOS-Fenster angezeigt werden. Der Catch-Block muss die Ausnahme auslösen, die er fängt. Dies ist ein Beispiel für das erneute Auslösen einer Ausnahme. Die Java-Laufzeitumgebung erzeugt die Ausnahme und löst sie aus, aber die Methode, die sie abfängt, hat nicht genug Informationen, um die Ausnahme zu verarbeiten, so dass sie die Methode aufruft, die sie aufruft.
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
Dieser Code ist alles notwendig, um Ihr Problem zu demonstrieren? Bitte lesen Sie und stellen Sie [MCVE] bereit. – Savior
Was ist deine Frage? Ich sehe nirgendwo in diesem Code einen "Fang" -Block. Und wenn die fragliche Methode die Ausnahme nicht sinnvoll handhaben kann, hat sie keine Probleme, die Ausnahme zu fangen. – David
Ich bin brandneu zu Ausnahmen/versuchen/fangen etc – HoodCoolege