Java 未捕获NumberFormatException
我没有主意了,我不知道为什么这些异常没有被捕获,但是Java 未捕获NumberFormatException,java,object,exception-handling,Java,Object,Exception Handling,我没有主意了,我不知道为什么这些异常没有被捕获,但是算术异常被捕获了。如果没有输入分子或分母,它应该捕获异常,对吗?如果能得到任何帮助,我将不胜感激。我一直在努力让这些异常类正常工作 public void actionPerformed(ActionEvent ev) { String numText = numFld.getText(); String denText = denFld.getText(); if(ev.getAct
算术异常
被捕获了。如果没有输入分子或分母,它应该捕获异常,对吗?如果能得到任何帮助,我将不胜感激。我一直在努力让这些异常类正常工作
public void actionPerformed(ActionEvent ev)
{
String numText = numFld.getText();
String denText = denFld.getText();
if(ev.getActionCommand().equals("Build Fraction"))
{
numFld.setText("");
denFld.setText("");
int numerator = Integer.parseInt(numText);
int denominator = Integer.parseInt(denText);
try {
System.out.println(numerator);
}
catch(NumberFormatException ex) {
JOptionPane.showMessageDialog(pnlOne, "Numerator cannot be empty");
System.out.println(ex.getMessage());
numFld.requestFocus();
}
try {
System.out.println(denominator);
}
catch(NumberFormatException ex) {
JOptionPane.showMessageDialog(pnlOne, "Denominator cannot be empty");
System.out.println(ex.getMessage());
denFld.requestFocus();
}
try {
System.out.println(numerator/denominator);
}
catch(ArithmeticException ex) {
JOptionPane.showMessageDialog(pnlOne, "Denominator cannot be 0");
System.out.println(ex.getMessage());
denFld.requestFocus();
}
if (denominator !=0 && numText!="" && denText!="") {
Fraction fraction = new Fraction(numerator,denominator);
fractions.add(fraction);
fractionFld.append(fraction.getNum() + "/" + fraction.getDen() + "\n\r");
}
}
发生崩溃是因为您试图在崩溃发生后捕获它,您应该将以下代码
Integer.parseInt(numText)
放入try{}
块中:
int numerator = 0;
int denominator = 0;
try {
numerator = Integer.parseInt(numText);
denominator = Integer.parseInt(denText);
} catch(NumberFormatException ex) {
//handle error
}
您使用什么类型的视图作为
numFld
和denFld
?你也可以发布崩溃日志吗?numfld和textfld是一个JTextPane,但是我如何在catch之外使用分子和分母变量呢statement@SeePlus您可以在try-catch块外初始化它们,但必须在try块内解析它们。@SeePlus我回答了您的问题吗?谢谢您的帮助,感谢您在一段时间后与我联系,了解情况:)