广告
返回顶部
首页 > 资讯 > 精选 >Java事件与错误处理方法是什么
  • 516
分享到

Java事件与错误处理方法是什么

2023-06-03 06:06:16 516人浏览 独家记忆
摘要

这篇文章主要讲解了“Java事件与错误处理方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java事件与错误处理方法是什么”吧!  12.1事件处理  传授新知  消息驱动、事件处理

这篇文章主要讲解了“Java事件与错误处理方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java事件与错误处理方法是什么”吧!

  12.1事件处理

  传授新知

  消息驱动、事件处理是面向对象编程技术的主要特点,它一改过程语言的顺序执行,整个程序以程序代码为主线地思想,而是变成了由用户,使用程序的用户为主线的思想。

  通俗地说,以前的程序设计思想中,整个程序的运行流程是以程序本身为主的,整个运行流程是在程序中预定义的。而在面向对象的程序设计思想中,则是让用户来掌握主动权,整个运行流程是由用户来决定的。应用程序一旦构建完GUI后,它就不再工作,而是等待,等待用户通过鼠标、键盘给它通知(消息驱动),它再根据这个通知的内容进行相应的处理(事件处理)。

  我们来回顾一下,在我们讲解使用“按钮”时,曾经在程序中使用过这样的一段程序:

button1.addActionListener(new ActionListener()
{
public void actionPerfORMed(ActionEvent evt)
{
Toolkit.getDefaultToolkit().beep();
}
});


  当时,我们已经对它的功能做了描述:首先为按钮buuton1增加了一个事件监测器,这个事件监测器用来监测按钮是否按下(ActionEvent)。另外,我们还编写了一个事件处理的程序段:


public void actionPerformed(ActionEvent evt)
{
Toolkit.getDefaultToolkit().beep();
}

  当按钮按下时,就会执行这个程序段,也就执行了Toolkit.getDefault.Toolkit().beep()方法,即响了一声铃。

  在程序中要编写“事件处理”程序段时,通常可以分为以下几个步骤来做:

  1.确定事件类型

  几乎用户使用鼠标、键盘做的每一个动作都会引起一个消息,也就是会引发一个事件,但我们并不是要对这些所有的事件都做出反应,有些事件并不是我们所关心的。对于不同的部件,我们需要关心的事件往往不同。下表中列出了最常用到的几个事件。

  部件 事件类型 事件描述

  JButton ActionEvent 按下了按钮

  CheckBox ActionEvent 选择或取消选择复选框

  JTextField ActionEvent 用户输入文本输入回车键

  表12-1 常用部件-事件一览表

  2.为部件增加一个该事件的监测器

  每一种事件类型都有一个相应的接口,通常名为XXXListener,其中XXX代表它所处理的事件类型。这些接口包含在java.awt.event和javax.swing.event包中。例如:


button1.addActionListener(new ActionListener()
{
……
});

  3.增加事件处理程序

  最后,我们就要往里面增加血肉,实际的事件处理程序。

  正如你所看到的一样,编写事件处理程序并不是一件简单的事,要写好事件处理程序更不是那么简单。由于本书是一本Java的入门性书籍,所以并没有把每个部件的全部事件都列举出来,做一个一一讲解。在此,只求大家能够通过学习对事件处理过程有一个粗略地了解,以便大家能够学习、研究各种与事件处理相关的知识。

  实例说明

  我们曾经在第10章中使用过Frame来构建小应用程序,当时我们可以看到程序执行时是新弹出了一个窗口,也就是一个Frame,这个Frame有最大化、最小化、关闭按钮。不知各位读者是否注意到,在这个Frame中呢,关闭按钮并没有生效,这是因为在程序中并未定义对这个事件的处理。下面我们来看一段程序,看一下它是如何使这个关闭按钮生效的。根据惯例,我们首先创建一个源程序:

  源程序:closeTest.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class closeTest
{
public static void main(String args[])
{
Frame frame1=new Frame("This is a Frame");
frame1.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame1.setSize(200,200);
frame1.show();
}
}
  这是一个Java的应用程序,我们首先使用javac编译,然后执行:

java closeTest

  来执行这个程序,程序的输出极为简单:

  图12-1 程序closeTest.java的输出

  一些提示:

  这个程序也从侧面说明了,我们在Java的应用程序中也可以使用GUI界面,虽然我们一直使用Java小应用程序(Applet)来举例。

  程序的输出是一个空白的Frame,大家现在按下关闭按钮,你会发现,这个Frame马上被关闭了。我们实现了我们的目标。

  传授新知

  下面,我们一起来看一下这个程序:

  1)

public static void main(String args[])

  大家应该还记得,一个Java应用程序(Application)是从main方法开始执行的吧!

  2)

Frame frame1=new Frame("This is a Frame");

  在这时,我们定义了一个Frame,这个我们学习过了,不会多说。

  3)

frame1.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

  这段程序是本节最重要的内容。它为容器frame1增加了一个有关window(窗口)的事件监测器。监测的事件是什么?是windowClosing,也就是按下关闭按钮。

  如果监测到这个按钮被按下时,就执行System.exit(0)退出程序。

  4)

frame1.setSize(200,200);
frame1.show();

  这两句语句,大家应该也不会陌生,我们先将Frame设置为200*200大,然后调用show方法将其显示出来。

  自测练习

  1) 当一个部件有一个事件发生,但并没有为这个部件的这个事件指定事件监测器,将会发生什么?________________。

  a.编译时就不会通过 b.引起Java程序发生致命错误

  c.忽略这个事件 d.引发默认的事件处理

  2) 通常我们使用____________方法来为一个部件增加事件监视器。

  a.addXXXListener b.XXXListener

  3) 事件监视器包含在_____________包中。

  a.java.awt.happen b.java.until c.java.awt.event

  4) 按钮按下事件名是__________。

  a.PressedEvent b.ActionEvent

  5) 在Java应用程序(Application)中不能够使用JButton对象?_______。

  a.对 b.错

  6) 仅有GUI部件可以产生事件?___________。

  a.对 b.错

  请说明理由:

  ____________________________________________________________________

  练习答案

  1)c 这个事件将被忽略,因为Java中并不存在默认的事件处理。当然也不会使Java程序异常退出,Java还不至于如此脆弱吧!

  2)a 当你遇到这种形式的语句,就是增加事件监测器。

  3)c 在java.awt.event和javax.swing.event中。

  4)b ActionEven。

  5)b 虽然我们一直都在以Applet为例,但这不证明,Application中不能够使用这些GUI部件。我们完全可以使用这个GUI部件组成一个Application程序。

  6)b 这是一种错觉,最简单的例子就是Frame,它是容器呀,其实还有许多东西可以发生事件。

  12.2错误处理

  传授新知

  “世界上并不存在完全无错的程序”,我们不讨论它是不是一条真理。但它的确是一条警语,它告诫我们在编写程序时一定要注意尽可能地避免错误。

  程序运行出错时会超出程序员的控制,使得程序“南辕北辙”,不仅无法正常完成功能,而且还会出现一些可怕的事情。

  注意:

  由于程序设计的错误而引起的事故数不胜数,损失最巨大的是美国的一次火箭发射,在那次悲剧中,在程序中由于错把“,”写成了“;”,却使得火箭在天上爆炸,所以为防止程序设计错误花再大的人力、物力也是应该的。

  最有效的解决方法是在程序设计是,有意识地加入一些机制,使其能够在运行时检测自己,在错误失控之前,报告出来。

  最常见的一种错误处理是为每一个方法(其它语言,就是每一个函数)返回一个状态值,用来指示该方法是否成功、正确地完成了任务。当调用这个方法的程序收到了一个错误的状态值,就能够得知程序出错了,再采取有效的措施避免这个错误引起的问题(最简单的方法就是退出程序,或给出提示提醒操作者)。

  下面我们来考察一下简单的例子:

public int getIndex(String emailaddr)
{
for(int x=0;x

  这个方法用来在emailaddr字符串中找到“@”符所在的位置,然后返回位置值。但细心的读者应该能够很快地提出一个问题:假如emailaddr中没有“@”符,那么这个程序将返回什么呢?

  对,这就是潜在的错误可能。当emailaddr中没有“@”符时,不管返回什么值,可以确定的一点就是返回的值一定不正确!

  然后,调用这个方法的程序并不知道它得到了一个错误的返回呀!它会当作一个正确的值继续运行下去。糟了,“多米诺骨牌”启动了!一个错误引发了。

  所以,我们应该在这种时候,给调用这个方法的程序一个提示,那就是返回一个明确的错误值,比如在这里我们可以使用-1来表示没找到。使用这种思想,我们将程序改写一下,形成:


public int getIndex(String emailaddr)
{
for(int x=0;x

  我们在原来的程序中加上了一句:return(-1),这时程序的逻辑发生了变化,当找到时“@”符时,将返回它所在的位置。而如果找不到,那么就会执行:return(-1)。

  然后我们在调用这个方法的程序收到的返回值是-1时,就能够意识到错误发生了。

  自测练习

  1) 请创建一个方法,在整数数组intArray查找是否有一个成员为5,有就返回它的位置。并且请注意加上一些错误处理机制。

  在这个程序中,你使用了什么错误处理机制。
  ____________________________________________________________________

  如果整型数组intArray的值是{2,5,6,9,10}那么,返回什么值?
  ____________________________________________________________________

  如果值是{4,6,2,90,8},则返回什么值?
  ____________________________________________________________________

  练习答案

  1) 以下一个实例:

public int searchfive(int intArray[])
{
for(int x=0;x

  在这个程序中,我们采用了通用的错误标识机制,也就是说,找到数字5,返回它的位置,而找不到数字5时,就返回-1。这样可以让调用这个方法的程序知道这个方法的执行效果。

  如果整型数组intArray的值是{2,5,6,9,10}那么将返回1。

  而如果值是{4,6,2,90,8},那么将找不到5,因而返回-1。

  12.3异常处理

  传授新知

  然而在有些情况下,合法的返回值和标识一个错误情形的返回值之间不能明确区分。这种情况下错误出现的地方,称为异常情形。这个异常错误是致命错误,经常使得程序异常退出。

  在Java语言中,提供了一些处理这些异常情况的工具,能够较好的处理这些情况,使得Java程序更加健壮。由于这方面的内容相对比较高级,很难使用较短的篇幅来说明,所以本书(一本入门的书)仅以只言片语,与大家做一个简单的介绍。

  1.异常处理的流程

  在Java中,异常是由Exception类定义的对象,一旦产生异常,方法的正常控制流会立即停止,Java虚拟机JVM)将试图找出能够捕获的处理程序并处理这个特定的异常。如果找不到处理程序,Exception对象将向上层传递,一层一层地上传,直至程序的main方法。如果还是找不到处理程序,程序将退出运行。

  也就是说,Java已经预先定义了许多异常情况(使用Exception类定义),当程序发生异常时,Java虚拟机就会想办法寻找排除异常的办法(也就是寻找相应的处理程序),如果在当前方法中找不到,就会将这个异常情况报告给调用这个方法的程序段,然后继续寻找相应的程序。如果还找不到就再向上一层传递,直到程序的main方法。如果都找不到,程序就会异常退出。

  2.构建异常处理的程序

  那么如何来构建这个异常处理程序呢?我们可以通过try/catch程序结构来设置:

try
{
……
}
catch(Exception ex)
{
……
}
  当try块内的代码产生了catch块中指定的异常就跳过try块内的后面的代码,而执行catch块内的程序。

  而如果try块内的代码未产生catch块中指定的异常,则跳过catch块内的程序。

感谢各位的阅读,以上就是“Java事件与错误处理方法是什么”的内容了,经过本文的学习后,相信大家对Java事件与错误处理方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java事件与错误处理方法是什么

本文链接: https://www.lsjlt.com/news/233173.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java事件与错误处理方法是什么
    这篇文章主要讲解了“Java事件与错误处理方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java事件与错误处理方法是什么”吧!  12.1事件处理  传授新知  消息驱动、事件处理...
    99+
    2023-06-03
  • android事件分发与处理的方法是什么
    Android事件分发与处理的方法主要有以下几种:1. 触摸事件分发处理:Android中的触摸事件主要包括按下、移动、抬起等动作。...
    99+
    2023-09-13
    android
  • Rust处理错误的方法是什么
    这篇文章主要介绍“Rust处理错误的方法是什么”,在日常操作中,相信很多人在Rust处理错误的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rust处理错误的方法是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • Java GUI事件处理方式是什么
    本篇内容主要讲解“Java GUI事件处理方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java GUI事件处理方式是什么”吧!事件处理主要涉及:事件源,事件,事件...
    99+
    2023-06-21
  • GoFrame错误处理常用方法是什么
    这篇“GoFrame错误处理常用方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“GoFrame错误处理常用方法是什么...
    99+
    2023-07-02
  • java中HttpClient的错误处理方法
    这篇“java中HttpClient的错误处理方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java中HttpClien...
    99+
    2023-06-30
  • access数据库错误处理的方法是什么
    在Access数据库中,可以使用以下方法处理错误:1. 使用On Error语句:在代码中使用On Error语句,可以捕捉并处理运...
    99+
    2023-09-21
    access数据库
  • java事件处理步骤是什么
    什么是事件?用户对组件的一个操作,称之为一个事件。事件源:能够产生事件的GUI组件对象。事件处理方法:能够接受,解析和处理事件类对象,实现与用户交互功能的方法。 事件监听器:可以处理事件的一个类。处理事件步骤:假设事件为XXXX向事件源注册...
    99+
    2015-07-22
    java教程 java 事件处理 步骤
  • java错误处理的方法有哪些
    Java错误处理的方法有以下几种:1. 异常捕获和处理:使用try-catch语句来捕获和处理异常。在try块中编写可能抛出异常的代...
    99+
    2023-08-26
    java
  • mysql相关的错误问题处理方法是什么
    这篇文章主要讲解了“mysql相关的错误问题处理方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql相关的错误问题处理方法是什么”吧! ...
    99+
    2022-10-19
  • php7中异常与错误的处理方法
    这篇文章将为大家详细讲解有关php7中异常与错误的处理方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常与错误的概述什么叫做异常?异常是指程序运行中不符合预期情况以及与正常流程不同的状况。比如你链接数...
    99+
    2023-06-14
  • Angular中处理错误的方式是什么
    本篇内容主要讲解“Angular中处理错误的方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Angular中处理错误的方式是什么”吧!什么是Angula...
    99+
    2022-10-19
  • php常见的错误与异常处理方法
    本篇内容介绍了“php常见的错误与异常处理方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php与其他计算机编程语言在遇到错误就抛出异常不...
    99+
    2023-06-02
  • java heap space错误的解决方法是什么
    Java heap space错误是由于堆内存不足导致的。堆内存是Java虚拟机用来存储对象实例和数组的地方,当堆内存不足时,就会抛...
    99+
    2023-08-22
    Java
  • Vue事件处理的原理与过程是什么
    这篇文章主要讲解了“Vue事件处理的原理与过程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue事件处理的原理与过程是什么”吧!事件绑定Vue中的事件绑定与原生JavaScript中...
    99+
    2023-07-05
  • Flutter事件监听与EventBus事件应用的方法是什么
    这篇文章主要介绍“Flutter事件监听与EventBus事件应用的方法是什么”,在日常操作中,相信很多人在Flutter事件监听与EventBus事件应用的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-06
  • java事件处理的三要素是什么
    Java事件处理的三要素包括事件源、事件监听器和事件对象。1. 事件源(Event Source):事件源是指触发事件的对象。它可以...
    99+
    2023-09-11
    java
  • java中的事件处理模型是什么
    java中的事件处理模型是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue...
    99+
    2023-06-14
  • swift错误处理do catch try try!使用的方法是什么
    这篇“swift错误处理do catch try try!使用的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获...
    99+
    2023-07-05
  • php 404错误的常见原因和处理方法是什么
    这篇文章主要介绍了php 404错误的常见原因和处理方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php 404错误的常见原因和处理方法是什么文章都会有所收获,下面我们一起来看看吧。一、常见原因文件或...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作