2

我在我的动作监听器中做异常,我是这一切的新手,所以我需要帮助。

我尝试了很多方法,现在我要这样做:

JButton buttonIzracunaj = new JButton("Izra\u010Dunaj");
    buttonIzracunaj.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent arg0)
        {
            int danInt = Integer.parseInt(textFieldDan.getText());
            int mjesecInt = Integer.parseInt(textFieldMjesec.getText());
            int godinaInt = Integer.parseInt(textFieldGodina.getText());

            if(danInt <= 31 && danInt > 0 && mjesecInt > 0 && mjesecInt <= 12 && godinaInt > 0)
            {
                int dan = danInt;
                int mjesec = mjesecInt;
                int godina = godinaInt;
            }

            String poruka = null;
            if ((danInt<1) && (danInt > 31))
            {
                try {
                    throw PremaliBrojException;
                } catch (Exception e) {
                    e.printStackTrace();
                    poruka = "Unijeli ste pogrešnu vrijednost.";
                    JOptionPane.showMessageDialog(null, poruka);
                }
             }
             int proteiniInt = Integer.parseInt(textFieldProteini.getText());
             int ugljikohidratiInt = Integer.parseInt(textFieldUgljikohidrati.getText());
             int mastiInt = Integer.parseInt(textFieldMasti.getText());
             int godineInt = Integer.parseInt(textFieldGodine.getText());
             int masaInt = Integer.parseInt(textFieldMasa.getText());
             int aktivnostInt = Integer.parseInt(textFieldDuljinaAktivnosti.getText());
             int hrInt = Integer.parseInt(textFieldProsjecniHR.getText());

             if(isMTrue)
             {
                 if (godineInt > 0 && masaInt > 30 && aktivnostInt > 0 && hrInt > 0)
                 {
                     double brojKalorija = (double) (ugljikohidratiInt * 4 + proteiniInt * 4 + mastiInt * 4) - (((-55.0969 + (0.6309 * hrInt) + (0.1988 * masaInt) + (0.2017 * godineInt)) / 4.184) * aktivnostInt);

                     round(brojKalorija, 3, BigDecimal.ROUND_HALF_UP);
                     poruka = "U suficitu ste ~ " + brojKalorija + " kalorija.";
                 } else {
                     poruka = "Unijeli ste pogrešnu vrijednost.";
                 }
                 JOptionPane.showMessageDialog(null, poruka);
             }
         }
     });
     panelIzracun.add(buttonIzracunaj);

什么也没有发生,它计算正确,但我需要有例外。我应该把它放在动作监听器之外吗?甚至在初始化()之外?

public class PremaliBrojException extends RuntimeException{
private static final long serialVersionUID = 1L;

public PremaliBrojException(String message) {
    super(message);
}

}

4

1 回答 1

0

在 actionPerformed 中处理异常或使用 Thread.setDefaultUncaughtExceptionHandler 设置默认异常处理程序。

于 2013-09-26T12:25:49.333 回答