我在我的 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/