Java第七章课后小结

Java第七章课后小结,第1张

Java第七章课后小结

异常分类总览图

1. Throwable的子类包含哪两类?简述Java Error类与Exception类的区别。


Error:致命异常。标识系统发生了不可控的错误。程序无法处理,只能人工介入。例如, 虚拟机产生的错误StackOverflowError、OutOfMemoryError。

Exception: 非致命异常。程序可处理。分为受编译器检测的checked异常(受检异常)和不受编译器检测的unchecked异常(非受检异常)。

2. Exception又分为checked异常和unchecked异常,请分别举例说明。

将派生于Error或者RuntimeException的异常称为unchecked异常,所有其他的异常成为checked异常。
Checked异常继承java.lang.Exception类。Unchecked异常继承自java.lang.RuntimeException类。
checked异常例子:

unchecked异常例子:

若想深入了解Checked和RuntimeException的话,推荐参考如下链接:
http://blog.csdn.net/kingzone_2008/article/details/8535287

3. 请查阅资料,简述StackOverflowError和OutOfMemoryError两类错误的发生情形和原因。

StackOverFlowError:
原因:堆栈溢出错误一般是递归调用。
例如:

package 1;
public class StackOverflowTest {
    public static void main(String[] args) {
        method();
    }
    public static void method(){
        for(;;)
            method();
    }
}


OutOfMemoryError:

package 1;
import java.util.ArrayList;
import java.util.List;
public class OutOfMemoryTest {
    public static void main(String[] args){
        List list=new ArrayList();
        for(;;){
            int[] tmp=new int[1000000];
            list.add(tmp);
        }
    }
}

4. 简述异常处理的两种方式,并举例说明区别。


声明抛出处理:
声明抛出 throws 声明抛出的位置:是在方法声明的位置上使用throws关键字向上抛出异常。
例子:

程序捕捉处理:
try…catch…

语法:
try{

可能出现异常的代码;

}catch(异常类型1 变量){

处理异常的代码;

}catch(异常类型2 变量){

处理异常的代码;

}…
例子:

5. 选取RuntimeException类的五个子类,编写抛出并捕获上述子类异常的程序。(例如算术异常,空指针异常,类转换异常,数组越界异常等) 6. 根据某业务场景自定义一个异常类,并在某场景下抛出该异常对象。 7. 异常中的throws声明与throw语句的区别是什么?请举例说明。

1、throw:指的是语句抛出一个异常。
例如:如下写了一个抛出异常的语句。利用throw可以自定义异常。
例子:

	private void checkIndex(int index) {
		if (index <= size - 1 && index >= 0) {
		} else {
			throw new IndexOutOfBoundsException("index:" + index + "  size:"
					+ size);
		}
	}

2、throws:指的是方法可能会抛出的异常的声明。
例如:下面的代码可能会抛出IO异常。
例子:

	public static void fileCopy(String from, String to) throws IOException {
		// 1、建立联系 file对象。源:存在且为文件+目的地:文件可以不存在
		File fromPath = new File(from);
		File toPath = new File(to);
		fileCopy(fromPath, toPath);
	}

8. finally子句的作用是什么?

finally常用来处理java一些后续的工作。

在java的的finally首先必须使用在所有catch的最后位置,其次它是必须执行的,无条件执行,甚至即使前面的try-catch语句中已经存在异常了,它仍然会执行。

不管try语句块正常结束还是异常结束,finally语句块是保证要执行的.如果try语句块正常结束,那么在try语句块中的语句都执行完之后,再执行finally语句块。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3979658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存