常见的RuntimeException

Java中采用了强制异常捕捉机制,这样一方面提升了程序的可靠性,不过有时候也带来一些麻烦。好比: int i= Integer.parseInt("33");这个我知道它不可能会抛出异常,可是不捕捉异常的话就过不了编译这关,固然这个代码没有意义的。    Java中全部异常或者错误都继承Throwable,咱们把它分为三类吧: 1.Error:全部都继承自Error,表示致命的错误,好比内存不够,字节码不合法等。 2.Exception:这个属于应用程序级别的异常,这类异常必须捕捉。 3.RuntimeException:奇怪RuntimeException继承了Exception,而不是直接继Error,  这个表示系统异常,比较严重。    Error咱们不多遇到,可是并非说Error就必定很是致命,举个例子,NoSuchMethodError表示没有这个方法,你调用的方法不存在,你必定以为奇怪,不存在怎么编译的过去呀?很简单的,你先编译好一个被调用的类A,给一个方法。而后在你的程序调用它,编译没问题,运行也没问题。如今再把A类中这个方法去掉,从新编译一遍,你再运行你的程序就知道错误是怎么回事了。 Exception不用说,咱们要本身捕捉。 RuntimeException能够说见的最多了,下面咱们说明一下常见的RuntimeException: NullPointerException:见的最多了,其实很简单,通常都是在null对象上调用方法了。 String s=null; boolean eq=s.equals(""); // NullPointerException 这里你看的很是明白了,为何一到程序中就晕呢? public int getNumber(String str){   if(str.equals("A")) return 1;    else if(str.equals("B")) return 2;  } 这个方法就有可能抛出NullPointerException,我建议你主动抛出异常,由于代码一多,你可能又晕了。 public int getNumber(String str){   if(str==null) throw new NullPointerException("参数不能为空");                                    //你是否以为明白多了    if(str.equals("A")) return 1;    else if(str.equals("B")) return 2;  } NumberFormatException:继承IllegalArgumentException,字符串转换为数字时。 好比int i= Integer.parseInt("ab3"); ArrayIndexOutOfBoundsException:数组越界 好比 int[] a=new int[3]; int b=a[3];  StringIndexOutOfBoundsException:字符串越界 好比 String s="hello"; char c=s.chatAt(6); ClassCastException:类型转换错误 好比 Object obj=new Object(); String s=(String)obj;  UnsupportedOperationException:该***做不被支持,若是咱们但愿不支持这个方法,能够抛出这个异常。既然不支持还要这个干嘛?有可能子类中不想支持父类中有的方法,能够直接抛出这个异常。 ArithmeticException:算术错误,典型的就是0做为除数的时候。 IllegalArgumentException:非法参数,在把字符串转换成数字的时候常常出现的一个异常,咱们能够在本身的程序中好好利用这个异常。 这些异常一看到名字就知道是怎么回事了,其实只要理解了java的异常处理机制,这些都不是问题。
相关文章
相关标签/搜索