Java基础重点知识点《异常01》

Posted ZTY·DDYY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础重点知识点《异常01》相关的知识,希望对你有一定的参考价值。

1.什么是异常?JAVA提供的异常处理机制有什么用?

以下的程序执行的过程中发生了不正常的情况,而这种情况叫做:异常。JAVA语言是一门十分完善的语言,提供了异常的处理方式,以下程序执行过程中出现了不正常的情况,JAVA把异常打印输出到了控制台,提供给程序员参考。程序员看到这个异常之后,可以对程序进行修改,让程序更加健壮

      什么是异常:程序的执行过程中的不正常情况

      异常的作用:增强了程序的健壮性

2.以下的程序执行控制台出现了

      Exception in thread "main" java.lang.ArithmeticException:/by zero

      ......................

     这个信息被我们称为:异常信息,这个信息是JVM打印的

   

package ExceptionTest01;

public class Test01 
    public static void main(String[] agrs)
        int a = 10;
        int b = 0;
        //实际上JVM在执行到这个地方的的时候,会new异常对象的new ArithmeException("/by zero");
        //JVM把new的异常对象抛出了,并且打印到屏幕上了
        int c = a / b;
        System.out.println(a + "/" + b + "=" + c);
        /*
        //我观察到了异常之后,对异常进行处理(对程序进行修改)
        if(b == 0)
            System.out.println("程序有异常,除数不能为0");
            return;
        
            int c = a / b;
            System.out.println(a + "/"+ b + "=" + c);
        */
    

3.JAVA语言中异常以什么形式存在的?

3.1.异常在JAVA中以类的形式存在的,每一个异常类都可以创建对象

3.2异常对应的现实生活:

     房子塌了(异常类):

          小陈家房子塌了(异常对象)

          小王家房子塌了(异常对象)

          小刘家房子塌了(异常对象)

      类:模板

      对象:实际存在的个体

    

package ExceptionTest01;

public class Test02 
    public static void main(String[] agrs)
    //通过异常类创建对象
       NumberFormatException nfe = new NumberFormatException("这是数字格式化异常");
    //数字格式化异常
        System.out.println(nfe);
    //通过异常类创建对象
        NullPointerException npe = new NullPointerException("这是空指针异常");
    //空指针异常
        System.out.println(npe);

    

4.java的异常处理机制

    4.1、异常在java中以类和对象的形式存在。那么异常的继承结构是怎样的?
    我们可以使用UML图来描述一下继承结构。
    画UML图有很多工具,例如:Rational Rose(收费的)、starUML等....
        Object
        Object下有Throwable(可抛出的)
        Throwable下有两个分支:Error(不可处理,直接退出JVM)和Exception(可处理的)
        Exception下有两个分支:
            Exception的直接子类:编译时异常(要求程序员在编写程序阶段必须预先对这些异常进行处理,如果不处理编译器报错,因此得名编译时异常。)。
            RuntimeException:运行时异常。(在编写程序阶段程序员可以预先处理,也可以不管,都行。)
    
    4.2、编译时异常和运行时异常,都是发生在运行阶段。编译阶段异常是不会发生的。
    编译时异常因为什么而得名?

        因为编译时异常必须在编译(编写)阶段预先处理,如果不处理编译器报错,因此得名。
        所有异常都是在运行阶段发生的。因为只有程序运行阶段才可以new对象。
        因为异常的发生就是new异常对象。

    
    4.3、编译时异常和运行时异常的区别?

        编译时异常一般发生的概率比较高。
            举个例子:

                你看到外面下雨了,倾盆大雨的。
                你出门之前会预料到:如果不打伞,我可能会生病(生病是一种异常)。
                而且这个异常发生的概率很高,所以我们出门之前要拿一把伞。
                “拿一把伞”就是对“生病异常”发生之前的一种处理方式。

                对于一些发生概率较高的异常,需要在运行之前对其进行预处理。

        运行时异常一般发生的概率比较低。
            举个例子:

                小明走在大街上,可能会被天上的飞机轮子砸到。
                被飞机轮子砸到也算一种异常。
                但是这种异常发生概率较低。
                在出门之前你没必要提前对这种发生概率较低的异常进行预处理。
                如果你预处理这种异常,你将活的很累。

        
        假设你在出门之前,你把能够发生的异常都预先处理,你这个人会更加
        的安全,但是你这个人活的很累。
        
        假设java中没有对异常进行划分,没有分为:编译时异常和运行时异常,
        所有的异常都需要在编写程序阶段对其进行预处理,将是怎样的效果呢?
            首先,如果这样的话,程序肯定是绝对的安全的。
            但是程序员编写程序太累,代码到处都是处理异常
            的代码。

6.UML图(补充内容)

    UML是一种统一建模语言。
    一种图标式语言(画图的)
    UML不是只有java中使用。只要是面向对象的编程语言,都有UML。
    一般画UML图的都是软件架构师或者说是系统分析师。这些级别的人员使用的。
    软件设计人员使用UML。

    在UML图中可以描述类和类之间的关系,程序执行的流程,对象的状态等.

    盖大楼和软件开发一样,一个道理。
        盖楼之前,会先由建筑师画图纸。图纸上一个一个符号都是标准符号。
        这个图纸画完,只要是搞建筑的都能看懂,因为这个图纸上标注的这些
        符号都是一种“标准的语言”。
    
    在java软件开发当中,软件分析师/设计师负责设计类,java软件开发人员
    必须要能看懂。

以上是关于Java基础重点知识点《异常01》的主要内容,如果未能解决你的问题,请参考以下文章

160 01 Android 零基础入门 03 Java常用工具类01 Java异常 03 异常处理简介 01 异常处理分类

JAVA核心技术I---JAVA基础知识(异常处理类)

164 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 04 终止finally执行的方法

Java基础重点知识之欣欣向然

Java开发技术总结:异常

Java异常处理的基础知识