java中抛出RuntimeException异常,为什么可以不用撰写代码去捕获它?
来源:互联网 发布:unity3d背包系统 下载 编辑:程序博客网 时间:2024/04/29 14:07
这是java的默认配置。
当你把一个异常定义在方法的throws定义中,你就可以不处理这个异常,系统会自动把该异常抛出。 而RuntimeException则是java设计中所有方法都默认定义在throws中了,所以只要你不捕获,就会一层一层的往上抛出。
除非你显示的标准要捕获它。否则不会被捕获。也不会造成编译异常。
其实大部分的RuntimeException,要么是系统异常。无法处理。例如网络问题。
要么就是应该在UT中发现的,例如空指针异常。
中文名:空指针异常。
java.lang.NullPointerException,是Java语言中的一个异常类。其位于java.lang包中,由于它的直接父类是java.lang.RuntimeException,所以该异常在源程序中可以不进行捕获和处理。
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
- 调用 null 对象的实例方法。
- 访问或修改 null 对象的字段。
- 如果一个数组为null,试图用属性length获得其长度时。
- 如果一个数组为null,试图访问或修改其中某个元素时。
- 在需要抛出一个异常对象,而该对象为 null 时。
应用程序将会抛出NullPointerException类的实例,表明其他对 null 对象的非法使用。
以下给出上面5种情况的示例程序。
(1)调用 null 对象的实例方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
}
}
(2)访问或修改 null 对象的字段。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
}
}
(3)如果一个数组为null,试图用属性length获得其长度时。
1
2
3
4
5
6
7
8
9
10
public
class
TestNullPointerException {
static
int
[] ia;
public
static
void
main(String args[]){
System.out.println(ia.length);
// 此处抛出NullPointerException
}
}
(4)如果一个数组为null,试图访问或修改其中某个元素时。
1
2
3
4
5
6
7
8
public
class
TestNullPointerException {
static
int
[] ia;
public
static
void
main(String args[]){
ia[
0
] =
1
;
// 此处抛出NullPointerException
}
}
(5)在需要抛出一个异常对象,而该对象为 null 时。
1
2
3
4
5
6
7
8
9
10
11
class
MyException
extends
RuntimeException {
}
public
class
TestNullPointerException {
static
MyException e;
public
static
void
main(String args[]){
throw
e;
// 此处抛出NullPointerException
}
0 0
- java中抛出RuntimeException异常,为什么可以不用撰写代码去捕获它?
- Java中抛出RuntimeException为什么不用显示声明
- Java中为什么有的方法必须抛出异常,有的不用
- java中对异常的抛出或捕获
- JAVA中异常抛出、捕获机制—try catch throw
- JAVA捕获异常与抛出异常
- jni异常,c++抛出异常,java捕获
- javascript中异常捕获抛出处理
- java 捕获线程里抛出的异常
- java异常的捕获与抛出原则
- Java异常的捕获和抛出
- java异常的捕获与抛出原则
- Java- 异常的抛出与捕获
- java异常的捕获与抛出原则
- java异常的捕获与抛出原则
- JAVA 7新特性——在单个catch代码块中捕获多个异常,以及用升级版的类型检查重新抛出异常
- JAVA 7新特性——在单个catch代码块中捕获多个异常,以及用升级版的类型检查重新抛出异常
- Java中的异常处理:何时抛出异常,何时捕获异常?
- 虚幻4随笔5 使用中的一些发现
- Redis数据结构与对象
- FPGA 中的latch 锁存器
- 编译驱动到内核的两种方式
- WCF通信模式
- java中抛出RuntimeException异常,为什么可以不用撰写代码去捕获它?
- 线程池ExecutorService
- HDU1494 跑跑卡丁车 --简单DP
- Cordova webapp archive时候 报错 Cordova/CDVViewController.h file not found
- OC_ARC学习笔记
- jmockit简单介绍
- 面向对象 第一课
- Android根据坐标判断是否在控件内
- GCC/G++安装/升级