Throwable 类是所有异常类的父类
RuntimeException 继承自 Throwable
在 JDK 文档里面
中文意思如下:
之前,写代码的时候 throw 某个异常,
发现有些异常就是不需要 throws 语句(在方法声明后面),而有些必须加上 throws 语句在方法声明后面),
或者 try..catch(在方法体里面)。
具体可以参见帖子:http://bbs.csdn.net/topics/390279427
看一个小例子
接收控制台输入的 两个 int 类型数,然后将两者相除。
package it.mark;
import java.util.Scanner;
public class OnExceptionDemo {
public static void main(String[] args) {
usingDivisionCalcu();
}
/**
* 使用除法计算器计算数值.
*/
private static void usingDivisionCalcu() {
int[] input = new int[2];
// 创建 Scanner 对象
Scanner scan = new Scanner(System.in);
// 等待用户输入
while (scan.hasNextInt()) {
for (int i = 0; i < 2; i++) {
input[i] = scan.nextInt();
}
break;
}
// 从用户输入数据中,获取被除数和除数
int dividend = input[0];
int divisor = input[1];
calc4division(dividend, divisor);
}
/**
* 除法計算.
*
* @param dividend
* 被除数
* @param divisor
* 除数
*/
private static void calc4division(int dividend, int divisor) {
int result = 0;
result = dividend / divisor;
System.out.println("计算结果是: " + result);
}
}
很明显,除数为 0 是错误的。
修改一下 calc4division 方法
/**
* 除法計算.
*
* @param dividend
* 被除数
* @param divisor
* 除数
*/
private static void calc4division(int dividend, int divisor) {
int result = 0;
if (divisor == 0) {
throw new ArithmeticException("除数是0,不符合人类计算规则!");
}
result = dividend / divisor;
System.out.println("计算结果是: " + result);
}
这里可以看出,在方法 calc4division 里面 throw ArithmeticException 异常,
但是编译器并没有要求我 throws 或者 try...catch
如果你换成 Exception 或者其子类,编译器就会要求你了。
这里,我们自己可以去直接捕获
/**
* 除法計算.
*
* @param dividend
* 被除数
* @param divisor
* 除数
*/
private static void calc4division(int dividend, int divisor) {
int result = 0;
try {
result = dividend / divisor;
} catch (ArithmeticException ae) {
System.out.println("除数是0,不符合人类计算规则!" + ae.getMessage());
}
System.out.println("计算结果是: " + result);
}
最后提醒
如果你的代码里面出现关于 throw RuntimeException,那就要根据实际情况去处理了。
是捕获还是让他运行时报错,由您决定!
更多关于 try catch 可以 go --->
http://blog.csdn.net/androidbluetooth/article/details/7868521