JAVA异常处理机制基础总结

此篇为菜鸟级水平,仅供初涉JAVA异常处理童鞋们参考。
今天,闲来无聊。小弟在这里把所学到的JAVA异常处理基础总结下来供大家参考。

首先,我们来分析一下异常的体系结构:
   Throwable:Exception和Error的父类。其中Error为错误,子类有VirtualMachineError--OutOfMemoryError。Exception为异常,分为FileNotFoundException和RunTimeException--ArrayIndexOutOfBoundsException,NullPointException,ClassCastException。

下面介绍异常的捕获:
    即我们常见的try    catch语句有时还加上finally。
    [:[/]/**
*/
try {
errorHandle(num);
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.print("您输入的数字有误,");

// 递归调用
enterNum();
} finally {
// //递归调用
// enterNum();
}
    当try内语句无异常时则执行try语句块,否则执行catch语句块,finally语句块最后执行,且一定会执行。
     异常的捕获我总节为两种。一种是强制性捕获。这种情况的原因是try语句块中的方法抛出的异常不是RunTimeException子类异常,因此必须加上try catch语句来捕获异常。另一种是非强制性捕获。这种情况下,try语句块中句块中的方法抛出的异常是RunTimeException子类异常,使用try catch语句是程序更人性化,使用更方便。例如:[/]/**
*/
try {
//扫描到输入的整形传入num
num = scanner.nextInt();
} catch (Exception e) {//捕获异常
System.out.println("您输入的不是数字,");
enterNum();
}

此处如果不用try catch当输入字母a是会这么报错:
请输入数字:
a
Exception in thread "main" java.util.InputMismatchException
另外,异常的捕获除了用try catch语句还可以上上抛出异常,即throws Exception,把异常抛给调用它的方法,此时调用它的方法也要向上抛出异常,最后抛到虚拟机中,虚拟机自行处理,效果和try catch一样。我们一般用try catch。


最后说一下,异常的抛出:
我们差API时会发现很多方法后面都有这么一段:throws **Exception即异常的抛出。
我们也可以自行写一个异常抛出的方法:
[/]/**
	 * 处理数字范围错误的方法
	 * @param num
	 * @throws Exception
	 */
	public void errorHandle(int num) throws Exception {
		// 当输入数字大于100
		Exception exception = new Exception("数字大于100");
		if (num > 100) {
			throw exception;
		}

	}

注意其中的两个位置。。throws Exception 和throw exception。。固定形式记住就行了。
  

你可能感兴趣的:(java,thread,虚拟机,idea)