zoukankan      html  css  js  c++  java
  • 关于异常

             以下是我对于Java中出现的异常的一些见解,见代表个人所想。

            异常,就是阻止当前方法或作用域继续执行的问题。在Java中出现了异常,也就说明你的程序存在了问题,导致程序无法继续运行下去,从而提醒我们需要注意并改正。

    例如除数为0的情况:它会抛出以下异常:

     

     异常提示的目的就是告诉你出现了哪种异常,从而使我们能够更好的处理这些问题,并且捕获异常能够增加程序的稳定性。异常处理的主要用途是提供准确的错误消息,解释失败的原因、位置和错误类型等,同时提供一定的恢复能力,尽可能地保证数据完整性不被破坏,并让程序能继续运行。

    其一般形式为:

            Try{
                //可能发生运行错误的代码;
            }
            catch(异常类型     异常对象引用){
                //用于处理异常的代码
            }
            finally{
                //用于“善后” 的代码
            }

    把可能会发生错误的代码放进try语句块中。 当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。 catch语句块中的代码用于处理错误。 当异常发生时,程序控制流程由try语句块跳转到catch语句块。 不管是否有异常发生,finally语句块中的语句始终保证被执行。 如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。

     

     

    Java 中所有可捕获的异常都派生自 Exception 类。有许多非常常见的会出现异常的问题需要我们注意:

    1. Java.lang.NullPointerException 
    这个的意思是遇到空指针异常,简单地说就是调用了未经初始化的对象或者是不存在的对象,比如说调用图片时,创建数组时,必须对其初始化。
    2. java.lang.ClassNotFoundException 
      这个异常是很多原本在JB等开发环境中开发的程序员,把JB下的程序包放在WTk下编译经常出现的问题,异常的解释是"指定的类不存在",
    这里主要考虑一下类的名称和路径是否正确即可,假如是在JB下做的程序包,一般都是默认加上Package的,所以转到WTK下后要注重把Package的路径加上。
    3. java.lang.ArithmeticException 
    这个是数学运算异常,比如说上边举到的例子,被除的数为0,这个是不应该的。
    4. java.lang.ArrayIndexOutOfBoundsException 
    这个是数组下标越界异常,相信大家也很经常遇到这种情况,所以这就需要的大家的细心了。
    5. java.lang.IllegalArgumentException 
      这个异常的解释是"方法的参数错误",很多J2ME的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数假如写成负数就会出现这个异常,
    再比如g.setColor(int red,int green,int blue)这个方法中的三个值,假如有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的就是赶紧去检查一下
    方法调用中的参数传递是不是出现了错误。
    6. java.lang.IllegalAccessException 
      这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注重这个
    异常。

    以上是一些我们经常遇到的异常问题,虽然有一些我们们还没有遇见过,但是当以后遇到的时候我们不妨在这些地方添加try catch finally来保证我们程序的稳定性。
    异常类分为两大部分:Errors和Exception两个类,其中前者出现的问题是系统的错误,通常由JVM处理,而后者出现的异常都是可以捕获的。Exception(可捕获异常类)
    又分为两类:

    (1)Check异常类:其是直接派生自Exception的异常类,必须被捕获或者再次声明抛出。
    (2)Runtime一场:其是派生自RuntimeException的异常类,使用throw语句可以随时抛出这种异常对象。
    以下是他们的关系图:

    finally的功能:

    资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况 finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。 注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。

    以上是结合了自己的理解和一些资料得来的总结,仅代表个人见解。

  • 相关阅读:
    JavaScript-年月日转换12小时制
    Javascript-双色球
    Javascript-for循环案例-打印1-100之间所有的数字
    HDU4240_Route Redundancy
    HDU2883_kebab
    POJ3041_Asteroids
    HDU3829_Cat VS Dog
    BZOJ2806_Cheat
    HDU4641_K-string
    CF271D_Good Substrings
  • 原文地址:https://www.cnblogs.com/liyuchao/p/9942286.html
Copyright © 2011-2022 走看看