[code="java"][/code]此篇为菜鸟级水平,仅供初涉JAVA异常处理童鞋们参考。
今天,闲来无聊。小弟在这里把所学到的JAVA异常处理基础总结下来供大家参考。
首先,我们来分析一下异常的体系结构:
Throwable:Exception和Error的父类。其中Error为错误,子类有VirtualMachineError--OutOfMemoryError。Exception为异常,分为FileNotFoundException和RunTimeException--ArrayIndexOutOfBoundsException,NullPointException,ClassCastException。
下面介绍异常的捕获:
即我们常见的try catch语句有时还加上finally。
[:[code="java"][/]/**
*/
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语句是程序更人性化,使用更方便。例如:[code="java"][/]/**
*/
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即异常的抛出。
我们也可以自行写一个异常抛出的方法:[code="java"][/]/**
* 处理数字范围错误的方法
* @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异常处理基础总结下来供大家参考。
首先,我们来分析一下异常的体系结构:
Throwable:Exception和Error的父类。其中Error为错误,子类有VirtualMachineError--OutOfMemoryError。Exception为异常,分为FileNotFoundException和RunTimeException--ArrayIndexOutOfBoundsException,NullPointException,ClassCastException。
下面介绍异常的捕获:
即我们常见的try catch语句有时还加上finally。
[:[code="java"][/]/**
*/
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语句是程序更人性化,使用更方便。例如:[code="java"][/]/**
*/
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即异常的抛出。
我们也可以自行写一个异常抛出的方法:[code="java"][/]/**
* 处理数字范围错误的方法
* @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。。固定形式记住就行了。