1.抛出异常throw
断言略
对可恢复的错误不能使用断言,而应该抛出异常;
断言很少被使用,更好的方法是编写单元测试。
1.1 概念
当使用方法时,需要告诉调用者出错的信息。我们这时候可以使用throw
1.2举例
需求:编写一个通过数组下标获取数组,如果下标越界,在控制台打印“亲,下标越界了”,如果数组为空,在控制台打印“亲,你的数组为空!!!” ;
public static int getIndexArray( int[] arr,int index) {
if(arr == null) {
//
throw new NullPointerException("亲,你的数组为空了!!!");
}
if( index < 0 || index > (arr.length-1) ) {
throw new ArrayIndexOutOfBoundsException("亲,你的下标越界了!!!");
}
return arr[index];
}
执行:
public static void main(String[] args) throws ParseException {
int[] arr = null;
int i = getIndexArray(arr,2);
}
结果:
public static void main(String[] args) throws ParseException {
int[] arr = {1,2,3};
int i = getIndexArray(arr,3);
}
2. 捕获异常try…catch...finally(可选择)
throws描述:
如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显式地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。
在方法声明中用 throws 子句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。
Throws 举例:
需求: 定义读取log.txt,如果文件不存在就抛给调用者,让调用者处理文件不存在的异常。
public static void read(String fileName) throws FileNotFoundException {
if(!"log.txt".equals(fileName)) {
throw new FileNotFoundException();
}
}
调用:
public static void main(String[] args) throws FileNotFoundException {
read("111");
}
举例:
Exception in thread "main" java.io.FileNotFoundException
at cn.hzat.Demo1.read(Demo1.java:24)
at cn.hzat.Demo1.main(Demo1.java:20)
注意字符串判断!!
//需求: 定义读取log.txt,如果文件不存在就抛给调用者,让调用者处理文件不存在的异常。
public void read(String fileName) {
/*
不推荐使用
if(!fileName.equals("log.txt")) {
}
*/
// 如果传的文件不是log.txt 说明读取日子文件失败
if(!"log.txt".equals(fileName)) {
}
}
3. 声明异常throws
使用情况说明:如果异常出现的话,会立刻终止程序,所以我们得处理异常,如果我们不想终止可以自己处理异常
4.throw和throws
5.常见异常举例
越界
空指针异常---null不能调用API
/0