马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马太效应 于 2017-7-30 22:56 编辑
今天是第26天,照常学习
异常继承架构
1.错误会被包装为对象,这些对象都是可抛出的,因此设计错误对象都是继承自java.lang.Throwable类,Throwable定义了错误信息、堆栈追踪(Stack Trace)等方法,它有两个子类:java.lang.Error与java.lang.Exception。
2.Error与其子类实例代表严重系统错误,如硬件层面错误、JVM错误或内存不足等问题。虽然也可以用try、catch来处理Error对象,但并不建议。
(如果抛出了Throwable对象,而程序中没有任何catch捕捉到错误对象。最后由JVM捕捉到的话,那么JVM基本处理就是显示错误对象打包的信息并中断程序。)
3.程序设计本身的错误,建议使用Exception或其子类实例来实现,所以通常称错误处理为异常处理(Exception Handling)。
4.单就语法与继承架构上来说,如果某个方法声明会抛出Throwable或子类实例,只要不属于Error或java.lang.RuntimeException或其子类实例,就必须明确使用try、catch语法加以处理,或者在方法中用throws声明这个方法会抛出异常,否则会编译失败。
5.Exception或其子对象,但非属于RuntimeException或其子对象,称为受检异常(Checked Exception)。受编译程序检查。
受检异常存在的目的,在于API设计者实现某方法时,某些条件成立时会引发错误,而且认为调用方法的客户端有能力处理错误,要求编译程序提醒客户端必须明确处理错误,不然不可通过编译,API客户端无权选择要不要处理。
6.属于RuntimeException衍生出来的类实例,代表API设计者实现某方法时,某些条件成立时会引发错误,而且认为API客户端应该在调用方法前做好检查,以避免引发错误,之所以命名为执行时期异常,是因为编译程序不会强迫一定得在语法上加以处理,亦称为非受检异常(Unchecked Exception)。
7.代码import java.util.Scanner;
public class Except {
public static void main(String[] args) {
// 模拟除法运算 用户输入被除数和除数,输出结果
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入被除数:");
int x = sc.nextInt();
System.out.println("请输入除数:");
int y = sc.nextInt();
double z;
try {
z = x / y;
System.out.println("结果为:" + z);
}
catch (Exception e) {
System.out.println("除法出错!除数不能为0~");
}
finally {
}
}
}
}
|