马太效应 发表于 2017-7-30 22:56:39

Java暑期学习Day26

本帖最后由 马太效应 于 2017-7-30 22:56 编辑

今天是第26天,照常学习{:10_329:}


static/image/hrline/3.gif

异常继承架构
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 {

                        }

                }

        }

}





页: [1]
查看完整版本: Java暑期学习Day26