栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

暑假java第三天

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

暑假java第三天

1.异常处理机制概念
package com.jmpower.javase.exception;


public class ExceptionTest01 {
    public static void main(String[] args) {
        int a=10;
        int b=0;
        int c=a/b;//实际上JVM在执行到此处的时候,会new异常对象:new ArithmeticException("/ by zero");
        //并且JVM将new的异常对象抛出,打印输出信息到控制台了。
        System.out.println(a+"/"+b+"="+c);

        //观察到异常,对程序进行修改,更加健壮
        
    }
}
2.异常存在的形式
package com.jmpower.javase.exception;


public class ExceptionTest02 {
    public static void main(String[] args) {
        //通过"异常类"实例化"异常对象"
        NumberFormatException nfe=new NumberFormatException("数字格式化异常!");

        //java.lang.NumberFormatException: 数字格式化异常!
        System.out.println(nfe);

        //通过"异常类"创建"异常对象"
        NullPointerException npe=new NullPointerException("空指针异常!");

        //java.lang.NullPointerException: 空指针异常
        System.out.println(npe);
    }
}
3.异常的继承结构

异常在Java中以类和对象的形式存在。那异常的继承结构是怎么样的?
Object
Object下有Throwable(可抛出的)
Throwable下有两个分支:Error(不可处理,直接退出JVM)和Exception(可处理的)
Exception下有两个分支:
Exception的直接子类:编译时异常。(要求程序员在编写程序阶段必须预先对这些异常进行处理,如果不处理编译器报错,因此得名编译时异常)
RunTimeException:运行时异常。(在编写程序阶段程序员可以预先处理,也可以不管)

4.编译时异常和运行时异常

1)概念:
编译时异常和运行时异常,都是发生在运行阶段。编译阶段异常是不会发生的。编译时异常因为什么而得名?
因为编译时异常必须在编译(编写)阶段预先处理,如果不处理编译器报错,因此得名。
所有异常都是在运行阶段发生的。因为只有程序运行阶段才可以new对象。因为异常的发生就是new异常对象。
2)区别:
编译时异常一般发生的概率比较高。
举个例子:
你看到外面下雨了,倾盆大雨的。
你出门之前会预料到:如果不打伞,我可能会生病(生病是一种异常)。
而且这个异常发生的概率很高,所以我们出门之前要拿一把伞。
"拿一把伞"就是对"生病异常"发生之前的一种处理方式。
对于一些发生概率较高的异常,需要在运行之前对其进行预处理。

运行时异常一般发生的概率比较低。
举个例子:
小明走在大街上,可能会被天上的飞机轮子砸到。
被飞机轮子砸到也算一种异常。
但是这种异常发生概率较低。
在出门之前你没必要提前对这种发生概率较低的一场进行预处理。
如果你预处理这种异常,你将活的很累。
假设java中没有对异常进行划分,没有分为: 编译时异常和运行时异常,所有的异常都需要在编写程序阶段对其进行预处理,将是怎样的效果呢?
首先,如果这样的话,程序肯定是绝对安全的。
但是程序员编写程序太累,代码到处都是处理异常的代码。

5.编译时异常还有其他名字

受检异常:CheckedException
受控异常:

6.运行时异常还有其他名字

未受检异常:UnCheckedException
非受控异常:

7.java语言对异常的处理包括两种方式

第一种方式:在方法是声明的位置上,使用throws关键字。
谁调用我,我就抛给谁,抛给上一级。
第二种方式:使用try…catch语句进行异常的捕捉。
这件事发生了,谁也不知道,因为我给抓住了。

举个例子:
我是某集团的一个销售员,因为我的失误,导致公司损失了1000元。
"损失1000元"这可以看作是一个异常发生了。我有两种处理方式,
第一种方式:我把这件事告诉我的领导【异常上抛】
第二种方式:我自己掏腰包把这个钱补上。【异常捕捉】
张三–>李四–>王五–>CEO

思考:异常发生之后,如果我选择了上抛,抛给了我的调用者,调用者需要对这个异常继续处理,那么调用者处理这个异常同样有两种方式。

注意:java中异常发生之后如果一直上抛,最终抛给了main方法,main方法继续向上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果。终止java程序的执行。

8.运行时异常编写程序时可以不处理
package com.jmpower.javase.exception;

public class ExceptionTest03 {
    public static void main(String[] args) {
        
        System.out.println(100/0);

        //这里的Hello World没有输出,没有执行。
        System.out.println("Hello World!");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号