zoukankan      html  css  js  c++  java
  • Exceotion与RuntimeException的区别

    1,在java中所有的事物都是对象,所以对象的父类的祖先都是Object对象,对于Exception也不例外。

    异常分为两种,一种是编译是能够检测的异常,另一种是编译时不被检测出的异常,(RuntimeException或者其子类)

    编译时异常,当函数体内throw了一个非运行时异常,而函数名上也没有声明该异常让调用者去捕获或抛出,那么java编译器是认为该程序存在异常隐患的,编译则不允许通过,

    例如以下代码编译则不通过

    1 public void test()//编译型,没有声明{
    2 throw new AclNotFoundException();
    3 }

    若要编译通过,应该告诉调用者去处理异常,例如以下代码则编译通过

    1 public void test() throws Exception{
    2 throw new AclNotFoundException();
    3 }

    对于(RuntimeException)运行时异常比较特殊,程序出错后终止程序的运行,异常由JVM处理。这样多用于处理事务的环境中,一步出错,终止执行,事务回滚,保证了事务的一致性。

    1 如果在函数内抛出了异常,即使函数名上不申明异常让调用者去处理,编译也通过

    2 即使在函数名上申明了该异常,调用者不去处理,编译也会通过。

    之所以不在函数名上申明改异常,因为调用者也无法处理,只有把程序停掉修改代码。例如空指针异常(NullPointException),调用者传入了一个null的参数,程序也没有任何意义,只有修改正确的代码才能解决。

    我们可以假设一下,如果RuntimeException需要强制申明,让调用者去处理,那么这个异常就会被隐藏,程序继续往下执行,但是执行结果都是错误的,所以没有任何意义。

    常见的RuntimeException

    1 NullPointerException

    2 NumberFormatException:继承IllegalArgumentException,字符串转换为数字出现。

    如 int i = Integer.parseInt("abc");

    3、ArrayIndexOutOfException:数组越界。如int[] a = new int[3]; int b = a[3];

    4、StringIndexOutOfBoundsException:字符串越界。如String s = "hello"; char a = s.charAt(6);

    5、ClassCastException:类型转换错误。如Object obj = new Object(); String s = (String) obj;

    6、UnsupportedOperationException:该操作不被支持。

    7、ArithmeticException:算术错误,典型的就是除0.

    8、IllegalArgumentException:非法参数

  • 相关阅读:
    2020.05.02【NOIP普及组】模拟赛C组31总结
    【提高组NOIP2008】传纸条 题解
    【NOIP2006PJ】Jam的计数法(count)题解
    话说placeholder
    css垂直居中
    fixed和absolute的区别
    链接的属性href=“?” ?该些什么及优缺点
    论ul、ol和dl的区别
    笔记本插拔电源黑屏一下
    CSS 样式书写规范
  • 原文地址:https://www.cnblogs.com/wrkjwl/p/9267227.html
Copyright © 2011-2022 走看看