这是java的默认配置。
当你把一个异常定义在方法的throws定义中,你就可以不处理这个异常,系统会自动把该异常抛出。 而RuntimeException则是java设计中所有方法都默认定义在throws中了,所以只要你不捕获,就会一层一层的往上抛出。
除非你显示的标准要捕获它。否则不会被捕获。也不会造成编译异常。
其实大部分的RuntimeException,要么是系统异常。无法处理。例如网络问题。
要么就是应该在UT中发现的,例如空指针异常。
中文名:空指针异常。
java.lang.NullPointerException,是Java语言中的一个异常类。其位于java.lang包中,由于它的直接父类是java.lang.RuntimeException,所以该异常在源程序中可以不进行捕获和处理。
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
- 调用 null 对象的实例方法。
- 访问或修改 null 对象的字段。
- 如果一个数组为null,试图用属性length获得其长度时。
- 如果一个数组为null,试图访问或修改其中某个元素时。
- 在需要抛出一个异常对象,而该对象为 null 时。
12345678910111213141516 | class Point { public int x, y; public int getX() { return x; } } public class TestNullPointerException { static Point p1; public static void main(String args[]){ p1.getX(); // 此处抛出NullPointerException } } |
12345678910111213141516 | class Point { public int x, y; public int getX() { return x; } } public class TestNullPointerException { static Point p1; public static void main(String args[]){ p1.x = 1 ; // 此处抛出NullPointerException } } |
12345678910 | public class TestNullPointerException { static int [] ia; public static void main(String args[]){ System.out.println(ia.length); // 此处抛出NullPointerException } } |
12345678 | public class TestNullPointerException { static int [] ia; public static void main(String args[]){ ia[ 0 ] = 1 ; // 此处抛出NullPointerException } } |
1234567891011 | class MyException extends RuntimeException { } public class TestNullPointerException { static MyException e; public static void main(String args[]){ throw e; // 此处抛出NullPointerException } |