当前位置:   article > 正文

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

java异常处理分为三个步骤

目录

前言必读

一、概念

二、异常出现的原因

三、处理异常三大方法 

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

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

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

前言必读

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

一、概念

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

2.java异常划分如下图:

1.Error:系统级别问题 

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

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

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

二、异常出现的原因

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

例子有:

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

2.空指针异常(NullpointerException)

3.算术异常(ArithmeticException)

4.丢失资源(MissingResourceException)

5.找不到类 (ClassNotFoundException)

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

三、处理异常三大方法 

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

具体:

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

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

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

语法:

  1. 方法 throws Exception{
  2. }
  3. 快捷键:alt+回车
  4. 自定义异常,方法内部抛出使用:throw new 异常

 选中这个抛出异常 

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

具体:

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

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

语法:

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

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

具体:

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

语法: 

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

五、例子

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

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

运行结果

    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.无法解决的虚拟机异常之堆溢出

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

运行结果

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

Process finished with exit code 1

 运行时异常例子

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

运行结果

这里出现了异常
出现异常了我还能运行耶
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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/372824?site
推荐阅读
相关标签
  

闽ICP备14008679号