当前位置:  编程技术>java/j2ee

java异常机制分析

    来源: 互联网  发布时间:2014-11-07

    本文导语:  本文实例分析了Java的异常机制,分享给大家供大家参考。相信有助于大家提高大家Java程序异常处理能力。具体分析如下: 众所周知,java中的异常(Exception)机制很重要,程序难免会出错,异常机制可以捕获程序中的错误,用来...

本文实例分析了Java的异常机制,分享给大家供大家参考。相信有助于大家提高大家Java程序异常处理能力。具体分析如下:

众所周知,java中的异常(Exception)机制很重要,程序难免会出错,异常机制可以捕获程序中的错误,用来提高程序的稳定性和健壮性。

java中的异常分为Checked Exception(非Runtime Exception)和UnChecked Exception(Runtime Exception),所有的异常类都直接或间接的继承Exception。Exception又直接继承自Throwable类,Throwable类的直接子类还有error类,不过当出现error时,程序会直接退出执行,程序处理不了error,所以这里重点讨论Exception类。RuntimeException类继承自Exception,运行时异常都直接或间接继承自RuntimeException类。其他继承Exception类的是非运行时异常,在编译期间可发现。运行时异常是在运行时才会出现的,如算术除零,在编译期间是可以通过的,但在运行时会抛出运行时异常,除数不能为零。

java的异常处理有两种

1、捕获异常

结构如下

try
{
//执行可能产生异常的代码

}
catch(RuntimeException e)
{
//对捕获的异常进行处理
}
catch(Exception e)//可定义捕获多个异常
{
//对捕获的异常进行处理
}
finally
{
//捕获完后要执行的代码,可有可无,如果有的话就一定会执行,不管有没有异常
}
try-catch-finally

如果异常被catch捕获后,后面还有catch语句就不会执行了,但如果有finally的话就一定会执行finally块里面的语句。

2、声明抛出异常

在调用会产生异常的方法所在的方法声明处声明throws Exception,此方法将不会对该类异常进行处理,而是由该方法的调用者处理。

3、人为的抛出异常

直接在方法内抛出异常,throw exception;

对于运行时异常推荐不对其进行处理。

自定义异常是定义了一个继承自Exception类的子类,一般不会定义继承自RuntimeException类,在try块中存在return语句时,如果有finally块语句,那么也要先执行完finally块的语句之后再返回,但如果try块中存在System.exit(0)语句,就不会执行finally块的语句,因为System.exit(0)会终止当前运行的java虚拟机,程序会在虚拟机终止前结束执行。

class myException extends Exception
{
  public myException(String str)
  {
    super(str);
  }
}
myException

异常在文件处理,输入输出流的应用场合等都会用上。

常见的异常类型有:

1、java.lang.NullPointerException:空指针异常,出现该异常的原因就是某个引用为null,但程序中又调用了该引用的某个方法。

2、java.lang.ClassNotFoundException :找不到指定的类,可能是类未定义。

3、java.lang.ArithmeticException:算术异常,如除数为零。

4、FileNotFoundException:在文件处理中,找不到指定的文件。

5、IOException:输入输出流异常

6、SQLException:sql异常,执行sql语句出现错误。

此外还有许多类型的异常,在以后的编程中会遇到。相信本文所述对大家的Java程序设计有一定的借鉴价值。


    
 
 

您可能感兴趣的文章:

  • JAVA有没有强制回收机制?
  • java中组件的绘制机制。详细讲一下,谢谢了!
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • java中消息处理的机制?
  • java的事件处理机制如何运用?
  • JAVA中有没有类似C中的select、poll机制的类包来实现线程并发控制
  • 问个java扩展机制问题..
  • 请关注一下java的事件机制!
  • java反射机制示例
  • java多线程中的异常处理机制简析
  • 基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍
  • java异常处理机制示例(java抛出异常、捕获、断言)
  • 学习JAVA响应事件的机制——————200分言谢————————
  • Java进阶教程之运行时类型识别RTTI机制
  • Java反射机制(Reflection)浅析
  • 我想问一下java的事件驱动机制是如何实现的,如何实现自定义的事件驱动?不够再加100!
  • java反射机制实战示例分享
  • Java 多线程同步 锁机制与synchronized深入解析
  • 初探Java类加载机制
  • java反射机制示例详解
  • 我想编程分析任意一个java文件,把其中的注释部分删掉,请帮我分析一下思路和方法好吗?
  • 急!请问有分析java程序性能瓶颈的工具吗?例如,统计 java 程序中函数调用次数?
  • Java 代码分析工具 JHawk
  • Java程序性能分析工具 VisualVM
  • java中消息处理的机制? iis7站长之家
  • Java监控和分析 Memory Analyzer
  • 基于Java的磁盘分析工具 JDiskReport
  • Java运行分析工具 jSonde
  • Java包依赖分析插件 ModelGoon
  • Java 网络数据分析包 JNetStream
  • Java多线程实时分析工具 mtrat
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3