目录

前言必读

一、概念

二、异常出现的原因

三、处理异常三大方法

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+回车

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

语法:

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

选中这个抛出异常

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.StackOverflowErrormain(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.OutOfMemoryErrorInteger[] 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

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

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

  1. 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)

    多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...

  2. 初学者成为优秀Java程序员的8个步骤

    经常会有人问小千,如何从一名零基础初学者成为一名优秀的Java程序员.其实,小千见证了很多人从一名初学者逐步成长为一名优秀的Java开发工程师,他们或多或少都具有一些特征.下面,小千就给大家分享成为优 ...

  3. linux java url 异常_java异常处理总结

    找到一个关于异常总结的很详细的文章,分享下.异常在我们编程中很重,在适当的位置,合理的处理或者抛出异常,对程序来说至关重要. 转:异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开 ...

  4. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...

  5. Java基础-异常(Exception)处理

    Java基础-异常(Exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常的概述 什么是异常?Java代码在运行时期发生的问题就是异常.在Java中,把异 ...

  6. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  7. java 处理异常的场景_Java高级----异常处理机制、自定义异常----含思维导图

    Java高级----异常处理机制.自定义异常----含思维导图 Java高级----异常处理机制.自定义异常----含思维导图 南一Java自学交流QQ群: 586012641 拒绝任何广告,共享Ja ...

  8. java线程概念_《Java基础知识》Java线程的概念

    按照规划,从本篇开始我们开启『并发』系列内容的总结,从本篇的线程开始,到线程池,到几种并发集合源码的分析,我们一点点来,希望你也有耐心,因为并发这块知识是你职业生涯始终绕不过的坎,任何一个项目都或多或 ...

  9. java checked异常有那些,java checked exceptions

    当前位置:我的异常网» 热门搜索 » java checked exceptions java checked exceptions www.myexceptions.net  网友分享于:2013- ...

最新文章

  1. 思科三层交换配置清单与案例
  2. java 虚引用 作用_Java的强引用、弱引用、软引用和虚引用,以及用途
  3. instance of 泛型
  4. pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...
  5. django-连接数据库mysql
  6. 苹果屏蔽更新描述文件_iPhone|IOS10-IOS12屏蔽系统更新描述文件|去除设置①小红点教程...
  7. 如何保障短网址的安全性?
  8. 音频-音频术语名词解释
  9. java实现百度网盘爬虫
  10. 【Python】类型转换:float()函数
  11. 抖音创作者身份类型和视频类型
  12. CentOS中使用VeraCrypt(四):进阶操作
  13. java编译和反编译
  14. 森林图怎么分析_资料|用Stata怎么做Meta分析?看完你就懂啦
  15. Java GUI气泡诗词02
  16. mysql:insert ignore、insert和replace区别
  17. 论文写作——韬ASMI29 introduction、related work两部分语句修改
  18. Davinci-国产开源数据可视化工具
  19. 初学C语言常见的错误
  20. iOS TabBar中间凸起实践

热门文章

  1. Vue生命周期钩子理解
  2. Photon01_Photon Voice 实现远程语音聊天功能
  3. MySQL入门--设置存储引擎
  4. python 爬虫(表情包)
  5. Room数据库简单使用
  6. WPF TreeView,Expander样式使用
  7. ROS学习VScode常用快捷键
  8. 品读国学经典之三——《齐桓晋文之事》
  9. 【Android SurfaceView】视频播放器 简单例子
  10. 1983年的图灵奖获得者-Ken Thompson (与Dennis M. Ritchie共同获得)