为什么 handleEvent() 方法抛出运行时异常?
Why does handleEvent() method throw a runtime exception?
我使用 java.awt.Frame 制作了一个 GUI 文件 I/O 应用程序。有两个标记为“ENTER”和“DONE”的按钮。输入按钮使程序将文本字段中的数据存储到文件中,而完成按钮使程序退出。单击 "ENTER" 按钮的事件由 action() 方法处理,而 "DONE" 按钮的事件由 handleEvent( ) 方法。该程序运行并完美地完成了工作,但问题是每当我单击一个按钮时,终端 window 出现在显示长时间运行异常消息的 GUI 框架后面。我将整个异常消息中的几行中的一行标识为指向 handleEvent() 方法中的一行 (line:78) .
See the full exception message here.(Google 文档)
下面是 handleEvent() 和 action() 方法的定义。
请预测运行时异常的可能原因,帮我解决。谢谢。
64 public boolean action(Event event, Object o){
65 if(event.target instanceof Button){
66 if(event.arg.equals("ENTER")){
67 try{
68 addRecord(); //calls the function to write data to the file
69 }
70 catch(Exception e){}
71 }
72 }
73 return super.action(event,o);
74 }
...
...
76 public boolean handleEvent(Event e){
77 if(e.target instanceof Button){
78 if(e.arg.equals("DONE"))
79 System.exit(0); //exits the program
80 }
81 return super.handleEvent(e);
82 }
...
...
84 public static void main(String args[]){
85 new ClassName().prepareGUI(); //prepareGUI() setups the Frame
86 }
根据堆栈跟踪,在第 78 行,'e' 或 'e.arg' 为空。
请提供您所在位置的代码 creating/setting 传递到 handleEvent() 方法的事件对象。
您可以使用 debugger 并单步执行代码,查看变量的状态,轻松确定此类问题的原因。
NullPointerException 在 handleEvent() 方法中抛出。由于异常不会影响程序,我通过使用 try-catch 块来捕获并吞下异常来解决获取该消息的问题,如下面的代码所示:
public boolean handleEvent(Event e){
try{
if(e.target instanceof Button){
if(e.arg.equals("DONE"))
System.exit(0); //exits the program
}
}
catch(NullPointerException npe){} //catching and swallowing
//the NullPointerException
return super.handleEvent(e);
}
因此,我没有在 Frame 后面打开终端 window 并显示该错误消息。感谢@AndreasVogl 提供的所有帮助。
我使用 java.awt.Frame 制作了一个 GUI 文件 I/O 应用程序。有两个标记为“ENTER”和“DONE”的按钮。输入按钮使程序将文本字段中的数据存储到文件中,而完成按钮使程序退出。单击 "ENTER" 按钮的事件由 action() 方法处理,而 "DONE" 按钮的事件由 handleEvent( ) 方法。该程序运行并完美地完成了工作,但问题是每当我单击一个按钮时,终端 window 出现在显示长时间运行异常消息的 GUI 框架后面。我将整个异常消息中的几行中的一行标识为指向 handleEvent() 方法中的一行 (line:78) .
See the full exception message here.(Google 文档)
下面是 handleEvent() 和 action() 方法的定义。 请预测运行时异常的可能原因,帮我解决。谢谢。
64 public boolean action(Event event, Object o){
65 if(event.target instanceof Button){
66 if(event.arg.equals("ENTER")){
67 try{
68 addRecord(); //calls the function to write data to the file
69 }
70 catch(Exception e){}
71 }
72 }
73 return super.action(event,o);
74 }
...
...
76 public boolean handleEvent(Event e){
77 if(e.target instanceof Button){
78 if(e.arg.equals("DONE"))
79 System.exit(0); //exits the program
80 }
81 return super.handleEvent(e);
82 }
...
...
84 public static void main(String args[]){
85 new ClassName().prepareGUI(); //prepareGUI() setups the Frame
86 }
根据堆栈跟踪,在第 78 行,'e' 或 'e.arg' 为空。
请提供您所在位置的代码 creating/setting 传递到 handleEvent() 方法的事件对象。
您可以使用 debugger 并单步执行代码,查看变量的状态,轻松确定此类问题的原因。
NullPointerException 在 handleEvent() 方法中抛出。由于异常不会影响程序,我通过使用 try-catch 块来捕获并吞下异常来解决获取该消息的问题,如下面的代码所示:
public boolean handleEvent(Event e){
try{
if(e.target instanceof Button){
if(e.arg.equals("DONE"))
System.exit(0); //exits the program
}
}
catch(NullPointerException npe){} //catching and swallowing
//the NullPointerException
return super.handleEvent(e);
}
因此,我没有在 Frame 后面打开终端 window 并显示该错误消息。感谢@AndreasVogl 提供的所有帮助。