Проблема с исключениями

  • Автор темы 4ydo
  • Дата начала
4

4ydo

#1
<!--shcode--><pre><code class='java'>import java.applet.Applet;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Interface extends Applet implements ActionListener {
static String f;
static int x1,x2,y1,y2;
private Button btCreate, btClear;
private Label l,lx1,lx2,ly1,ly2, l3;
public static TextField tf;
private TextField tfx1, tfx2, tfy1, tfy2;
public void paint(Graphics g) {
g.drawLine(4, 3, 496, 3);
g.drawLine(4,3,4,496);
g.drawLine(4, 496, 496, 496);
g.drawLine(496,3,496,496);
g.drawLine(4, 85, 496, 85);
}
public void init(){
l = new Label ("Функция:");
add(l);
tf = new TextField (55);
add(tf);
lx1= new Label ("x1:");
add (lx1);
tfx1 = new TextField (3);
add(tfx1);
lx2= new Label ("x2:");
add (lx2);
tfx2 = new TextField (3);
add(tfx2);
ly1= new Label ("y1:");
add (ly1);
tfy1 = new TextField (3);
add(tfy1);
ly2= new Label ("y2:");
add (ly2);
tfy2 = new TextField (3);
add(tfy2);

btCreate = new Button ("Построить");
add(btCreate);
btCreate.addActionListener(this);
btClear = new Button ("Очистить");
add(btClear);
btClear.addActionListener(this);
l3=new Label("Пожалуйста, ведите функцию и размеры осей.");
add(l3);

}
public void actionPerformed (ActionEvent ae){

Object sourse = ae.getSource();
if (sourse == btCreate){
if(tf.getText().equals("")){
l3.setText("Ошибка! Функция не введена.");

}
else
if (tfx1.getText().equals("") ||tfx2.getText().equals("") ||tfy1.getText().equals("") ||tfy2.getText().equals("")){
l3.setText("Ошибка! Не введены размеры осей.");
}
else{
f=tf.getText();
try {
x1 = Integer.parseInt(tfx1.getText());
x2 = Integer.parseInt(tfx2.getText());
y1 = Integer.parseInt(tfy1.getText());
y2 = Integer.parseInt(tfy2.getText());

throw new NumberFormatException ();
}
catch (NumberFormatException e){
l3.setText("Не правильно введены оси.");
}
if (x1>=x2){
l3.setText("Ошибка! x1 должен быть меньше x2.");

}
else {
if (y1>=y2){
l3.setText("Ошибка! y1 должен быть меньше y2.");

}

}
}


}


else
if (sourse==btClear){
clear();
}

}
public void clear (){
l3.setText("Пожалуйста, ведите функцию и размеры осей.");
tf.setText("");
tfx1.setText("");
tfx2.setText("");
tfy1.setText("");
tfy2.setText("");
}
}[/CODE]

не могу разобраться в чем дело.пока формат поля функции меня не очень интересует. а вот когда вводишь в поле x1 число -10 исключение опять бросается. это проблема в методе x1 = Integer.parseInt(tfx1.getText()) (нельзя с отрицательными)? если да то как исправить.
 

LuMee

Well-known member
02.05.2006
477
0
#2
Рискну предположить, что проблема в строке:
Код:
throw new NumberFormatException ();
которая и выбрасывает исключение независимо от введенных данных.
 
J

jCoder

#3
Скорее всего, конструкции вида:

throw new NumberFormatException()

нужно связывать вместе с конструкцией проверки условия: if(). В противном случае, может возникнуть ошибка времени исполнения.

На мой взгляд, лучше

if(условие_возникновения_исключения)
throw new NumberFormatException();