当前位置:   article > 正文

Java异常之RuntimeException

java runtimeexception

  人生不如意十有八九。在打Core Java里面的例子的时候总是一遍就过,但是实际上只要是自己想着动手去打造自己想要的东西,异常的状况也是十有八九的。

  在Java中会使用异常处理的错误捕获机制处理这些异常。假设在Java程序运行的过程中出现了一个错误,而且由于这个错误是的某些操作并没有完成,所以程序应该:

    ① 返回到一种安全状态,并能够让用户执行一些其他的命令。

    ② 允许用户保存所有操作的结果,并以妥善的方式终止程序。

  而通常,要想做到以上这两点也是没那么简单的。

  一般我们用这几个关键字对产生异常的程序进行善后:try、catch、finally、throws,结构如下:

try{

}catch(ExceptionType e){

}finally{

}

  在Java程序设计语言中,异常对象都是派生于Throwable类的一个实例,如果我们对Java内置的异常类不能满足,还可以自己去创建异常类(一定要继承Throwable类)。

  Java异常层次结构的简化示意图如下:

    -Throwable

      -Error

      -Exception

        -IOException

        -RuntimeException

  需要注意的是,所有的异常都是由Throwable继承而来的,但在下一层就会被分解为两个部分:Error和Exception。

  Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这类型的对象。如果出现了这样的内部错误,除了通告给用户,并尽力使程序安全地终止以外,再也无能为力了。

  而Exception层次又分解为两个分支:RuntimeException和其他异常。

  其他异常类似于:

    ① 试图在文件尾部后面读取数据

    ② 试图打开一个不存在的文件

    ③ 视图根据给定的字符串查找Class对象,而这个字符串标识的类并不存在。

  有句话是这么说的,“如果出现RuntimeException异常,那么就一定是你的问题”(《Core Java I》),那么常见的RuntimeException有哪些呢?

  -java.lang.NullPointerException

    “访问null指针”,简单的说就是调用了未经初始化的对象或者不存在的对象了,或者访问在不允许null出现的地方,一般的解决方法就是实例化或者想办法把null消去。

  -java.lang.ClassNotFoundException

    "指定类不存在",简单的说就是你要调用的类在所有的包里面都找不到,这个错误一般在引用其他jar中的类但是又没有导入这个jar发生的比较多,一般的解决方法就是给出这个类或者引入包含这个类的jar就好。

  -java.lang.ArithmeticException

    "数学运算异常",简单说就是你的数学式子有错,像是除于0之类的错误,这种错误改过来就好。

  -java.lang.ArrayIndexOutOfBoundsException

    "数组访问越界",简单的说就是访问到了定义的数组之外的地方去了,这种错误一般检查一下自己的数组的length和调用错误的下标就可以找到问题了。

  -java.lang.IllegalArgumentException

    "方法的参数错误",简单的说就是在调用方法的时候参数传错了,这种错误需要好好地检查一下方法所定义的参数,还有特定方法所需的特定数据的范围,像是g.setColor(int red, int green, int blue)这个方法中的三个值,如果传递的参数是在0~255值之外的,就会报这个错误。

  -java.lang.IllegalAccessException

    “没有访问权限”,简单的说就是当没有一定的访问权限去调用一个类、方法或者变量的时候就会出来这个错误。

  -java.lang.IncompatibleClassChangeError

    "不兼容的类变化错误",就是说对类进行了不兼容的转换。

  -java.lang.InstantiationError

    "实例化错误",当一个应用视图通过Java的new操作符构造一个抽象类或者接口的时候就会触发这个异常。

  -java.lang.LinkageError

    "链接错误",该错误及其所有子类指示某个类依赖于另一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发的错误。

  -java.lang.StackOverflowError

    "堆栈溢出错误",当一个应用递归调用的层次太深而导致堆栈溢出时抛出异常,给递归的深度打上一个下限或者上限即可。

  

  

 

参考:

https://blog.csdn.net/jarvan_song/article/details/52584608

《Java核心技术I卷》

转载于:https://www.cnblogs.com/NYfor2018/p/9468042.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/213913
推荐阅读
相关标签
  

闽ICP备14008679号