Java三大异常概念和处理步骤(防患于未然)

导读:本篇文章讲解 Java三大异常概念和处理步骤(防患于未然),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

前言必读

一、概念

二、异常出现的原因

三、处理异常三大方法 

1.出现异常直接抛出去给调用者,调用者也抛出去

2.出现异常自己捕获,不麻烦别人

3.前两种结合,出现异常抛出去给调用者,调用者捕获处理

前言必读

读者手册(必读)_云边的快乐猫的博客-CSDN博客

一、概念

1.异常分为编译时异常和运行时异常

2.java异常划分如下图:

Java三大异常概念和处理步骤(防患于未然)

1.Error:系统级别问题 

2.Exception:java.lang包下,称为异常类,代表程序本身可以处理的问题

3.RuntimeException:运行时异常,在运行时候才会发现报错的,例如空指针异常,数组索引越界

4.其他异常:除RuntimeException之外的所有异常,在编译时候就要处理,否则编译不通过,例如日期格式等

二、异常出现的原因

运行时异常:业务逻辑思维没有考虑好

例子有:

1.数组索引越界异常(ArraylndexOutOfBoundsException)

2.空指针异常(NullpointerException)

3.算术异常(ArithmeticException)

4.丢失资源(MissingResourceException)

5.找不到类 (ClassNotFoundException)

编译时异常:代码书写规范问题

三、处理异常三大方法 

1.出现异常直接抛出去给调用者,调用者也抛出去

具体:

throws:用在方法上,可以将方法内部的的异常抛给调用者处理

方式:哪里红光标就放哪里然后使用快捷键:alt+回车

评价:一直往外抛,抛出去给虚拟机会导致程序死亡 

语法:

        方法 throws Exception{

        }
        

快捷键:alt+回车

自定义异常,方法内部抛出使用:throw new 异常

 选中这个抛出异常 

Java三大异常概念和处理步骤(防患于未然)

2.出现异常自己捕获,不麻烦别人

具体:

try….catch:用在方法内部,可以将出现的异常直接捕获处理

评价:这种方式还可以,发生异常自己内部独立处理,程序继续往下执行

语法:

        try {
            //可能出现的异常代码块
        } catch (Exception e) {
            e.printStackTrace();//打印异常栈信息
        }
//快捷键:ctrl+alt+t

3.前两种结合,出现异常抛出去给调用者,调用者捕获处理

具体:

评价:这种方式最后,把最底层代码抛给最外层再进行集中捕获处理

语法: 

具体步骤跟着前面两个来1.先对异常进行抛出到最外层,2.然后进行捕获处理

五、例子

1.无法解决的虚拟机异常之栈溢出

package bao;
//测试类
public class Test {
    public static void main(String[] args) {
        //栈溢出,无法解决的异常,java.lang.StackOverflowError
        main(args);
    }
}

运行结果

    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)
    at bao.Test.main(Test.java:6)

 1.无法解决的虚拟机异常之堆溢出

package bao;
//测试类
public class Test {
    public static void main(String[] args) {
        //堆溢出,无法解决的异常,java.lang.OutOfMemoryError
        Integer[] arr = new Integer[1024*1024*1024];
    }
}

运行结果

Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
    at bao.Test.main(Test.java:6)

Process finished with exit code 1

 运行时异常例子

package bao;
public class Test {
    public static void main(String[] args) {
        //2.快捷键ctrl+alt+t生成捕获异常
        try {//监控区域
            System.out.println(10/0);//1.不能除于0,出现异常
        } catch (Exception e) {//想要捕获的异常类型
            System.out.println("这里出现了异常");//手动提醒用户出现异常
            throw new RuntimeException(e);//往外抛,打印错误的信息,这个注释掉调控制台就不会报红
        } finally {//处理善后工作
            System.out.println("出现异常了我还能运行耶");//出现异常后还能运行的代码
        }
    }
}
//注意:多组异常放一起,越大的父类异常放在越下面

运行结果

这里出现了异常
出现异常了我还能运行耶
Exception in thread “main” java.lang.RuntimeException: java.lang.ArithmeticException: / by zero
    at bao.Test.main(Test.java:9)
Caused by: java.lang.ArithmeticException: / by zero
    at bao.Test.main(Test.java:6)

Process finished with exit code 1

旁白:出现异常能解决就解决,解决不了再快捷键抛出捕获处理等。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112710.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!