Java se异常笔记
异常:是在运行时发生不正常情况.
在java中用类的形式对不正常情况进行了描述和封装对象.
描述不正常的情况的类,就是异常类.
以前正常流程代码和问题处理代码相结合。提高阅读性.
现在将正常流程代码和问题处理代码分离.
其实异常就是java通过面向对象的思想将问题封装成了对象.
用异常类对其进行描述.
不同的问题用不同的类进行具体的代码描述,比喻角标越界等.
问题很多,意味着描述的类很多.
将其共性进行向上抽取,形成了异常体系.
代码示例一:
//最终问题(不正常情况)就分为两大类
/*Throwable:无论error还是异常,问题,问题发生就应该可以抛出,让调用者知道并处理。
* 该体系的特点就在于Throwable及所有的子类都具有可抛性
* 具体通过两个关键字来体现的
* throws throw ,凡是可以被这两个关键字所操作的类和对象都具有可抛性
* |--1,一般不可处理的。Error
* |--2,可以处理的。Exception
*
*/
class Test{
public static void main(String[] args){
int[] arr = new int[3];
arr = null;
//System.out.println(arr[3]);
sleep(-5);
}
public static void sleep(int time){
if(time<0){
new FuTime();//就是时间为负的情况
}
if(time>1000000){
new BigTime();
}
System.out.println("我睡。。。"+time);
}
}
class FuTime{
}
class BigTime{
}
输出结果:
我睡。。。-5
代码示例二:
class Demo{
public int method(int [] arr,int index){
if(arr==null){
throw new NullPointerException("数组的引用不能为空");
}
if(index>=arr.length){
throw new ArrayIndexOutOfBoundsException("数组角标越界了:"+index);
}
if(index<0){
throw new ArrayIndexOutOfBoundsException("数组角标不能为负数:"+index);
}
return arr[index];
}
}
class Test2 {
public static void main(String[] args){
int[] arr = new int[3];
Demo d = new Demo();
int num = d.method(null, 30);
System.out.println("num"+num);
System.out.println("Over");
}
}
输出结果:
Exception in thread “main” java.lang.NullPointerException: 数组的引用不能为空
at Demo.method(Test2.java:4)
at Test2.main(Test2.java:20)