java - Java swing 应用程序 Action 监听器中的异常

标签 java swing exception action listener

我在我的 Action 监听器中出现异常,我是这方面的新手,所以我需要帮助。

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

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);

什么也没发生,它计算一切正确,但我需要有异常(exception)。我应该把它放在 Action 监听器之外吗?甚至在 initialize() 之外?

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

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

最佳答案

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

关于java - Java swing 应用程序 Action 监听器中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17262548/

相关文章:

java - java中的绑定(bind)器方法

java - 将 key=value 的字符串解析为 Map

java - 复合组件中的阶段监听器从未被调用过

java - Java 2D 中的可拖动矩形

java - 使用 KeyListener 进行 Pong 控制

c++ - C++代码中的异常安全

java - 添加索引到 jar 文件,引用外部 jar 文件

java - 如何使用数据库中的数据更新(刷新)JTable

cakephp - Cake PHP异常错误

Java.util.NoSuchElementException