Board logo

标题: Java应用程序常见异常类解析 [打印本页]

作者: qingqing3721    时间: 2011-9-5 22:54     标题: Java应用程序常见异常类解析

异常跟普通的警告等有一定的区别。当应用程序发生异常时,会中断正在执行的程序的正常指令流。也就是说,发生异常前面的代码将得不到正确的执行。甚至还会触发数据库的回退操作。
  在Java开发平台中,异常包括预定义异常与自定义异常。这两种异常的类型互为补充。作为一个合格的程序开发人员,要擅长在应用程序中使用异常。这可以提高应用程序的交互性。同时,也是保证应用程序正常运行的前提。故异常的处置关于开发一个优秀的应用程序来说非常的重要。为此笔者以为程序开发人员应该对Java应用程序的常见异常有一个深化的了解。只要在了解这些常见异常的状况下,才干够做好自定义异常的处置。
  一、常见异常的类型与原因。
  关于Java应用程序的常见异常,笔者以为程序开发人员要从两个方面去了解。一是要知道有哪些常见的Java应用程序异常,二是需求知道哪些原因可能会形成这个异常。这不只需求程序管理人员在日常工作中要注意积累,在必要的状况下还需求去从其它渠道搜集资料。笔者对此就停止一个分析,希望能够对各位程序开发人员有一定的协助。
  1、 SQLException:操作数据库异常类。
  现在的Java应用程序大局部都是依赖于数据库运行的。当Java应用程序与数据库停止沟通时假设产生了错误,就会触发这个类。同时会将数据库的错误信息通过这个类显示给用户。也就是说,这个操作数据库异常类是数据库与用户之间异常信息传递的桥梁。如现在用户往系统中插入数据,而在数据库中规则某个字段必需唯一。当用户插入数据的时分,假设这个字段的值跟现有的纪录反复了,违背了数据库的唯一性约束,此时数据库就会跑出一个异常信息。这个信息一般用户可能看不到,因为其发生在数据库层面的。此时这个操作数据库异常类就会捕获到数据库的这个异常信息,并将这个异常信息传递到前台。如此的话,前台用户就可以依据这个异常信息来分析发生错误的原因。这就是这个操作数据库异常类的主要用途。在Java应用程序中,一切数据库操作发生异常时,都会触发这一个类。一切此时Java应用程序自身的提示信息往往过于笼统,只是说与数据库交互呈现错误,没有多大的参考价值。此时反而是数据库的提示信息更加有使用价值。
  2、 ClassCastException:数据类型转换异常。
  在Java应用程序中,有时分需求对数据类型停止转换。这个转换包括显示的转换与隐式的转换。不过无论怎样转换,都必需要契合一个前提的条件,即数据类型的兼容性。假设在数据转换的进程中,违背了这个准绳,那么就会触发数据类型转换异常。如现在在应用程序中,开发人员需求将一个字符型的日期数据转换为数据库所能够接受的日期型数据,此时只需求在前台应用程序中停止控制,一般不会有成果。但是,假设前台应用程序缺乏相关的控制,如用户在输出日期的时分只输出月、日信息,而没有年份的信息。此时应用程序在停止数据类型转换的时分,就会呈现异常。依据笔者的经历,数据类型转换异常在应用程序开发中使一个呈现的比较多的异常,也是一个比较低级的异常。因为大局部状况下,都可以在应用程序窗口中对数据类型停止一些强迫的控制。.即在数据类型停止转换之前,就保证数据类型的兼容性。如此的话,就不容易形成数据类型的转换异常。如在只允许数值类型的字段中,可以设置不允许用户输出数值以外的字符。虽然说有了异常处置机制,可以保证应用程序不会被错误的运行。但是在实践开发中,还是要尽可能多的预见错误发生的原因,尽量避免异常的发生。
  3、 NumberFormatException:字符串转换为数字类型时抛出的异常。
  在数据类型转换进程中,假设是字符型转换为数字型进程中呈现的成果,关于这个异常在Java程序中采用了一个独立的异常,即NumberFormatException。如现在讲字符型的数据“123456”转换为数值型数据时,是允许的。但是假设字符型数据中包含了非数字型的字符,如123#56,此时转换为数值型时就会呈现异常。系统就会捕获到这个异常,并停止处置。
Java应用程序中常见的异常类还有很多。如未找到相应类异常、不允许拜访某些类异常、文件曾经结束异常、文件未找到异常、字段未找到异常等等。一般系统开发人员都可以依据这个异常名来判别以后异常的类型。虽然不错,但是好忘性不如烂笔头。程序开发人员在必要的时分(特别是存在自定义异常的时分),最后手头有一份异常明细表。如此的话,无论是应用程序在调试进程中发现成果,还是运行进程中接到用户的投诉,都可以及时的依据异常名字来找到异常发生的原因。从而可以在最短时间内解决异常,恢复应用程序的正常运行。这个措施笔者用了很多年,非常的有效。




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0