异常之异常概述 [Java]

异常之异常概述

异常:在java语言中,将程序执行中发生的不正常情况称为异常

  • 开发过程中的语法错误和逻辑错误不是异常

异常的分类()

异常可以分为Error和Exception

Error

Error:java虚拟机无法解决的严重问题(Error发生后程序员无法作为,这个时候java虚拟机(jvm)已经停止运行了)

​ eg:

  1. jvm系统内部错误
  2. 资源耗尽等严重情况

Error的发生我们一般不编写针对性的代码进行处理(因为这个时候jvm已经停止运行了,程序员无法解决)

Error的举例:
栈溢出:java.lang.StackOverflowError

​ eg:在main方法中调用main方法(就会一直重复调用main方法,会一直消耗栈内存的空间,也就会发生占内存溢出)

堆溢出:java.lang.OutOfMemoryError(简称为OOM)

​ eg:Inter [] arr=new Integer[1024 * 1024 * 1024];(由于new对象是在堆内存中开辟空间,而堆内存也是有限的,当在堆内存中创建的空间太多的时候,就会产生堆溢出)

Exception

其他因编程错误或偶然的外在因素导致的一般性问题,可使用针对性的代码进行处理

Exception的举例

空指针访问

试图读取不存在的文件

网络连接中断

数组角标越界

  • 广义的异常:Error+Exception
  • 狭义的异常:Exception

对于我们遇到的这些错误(也就是异常),我们一般有两种解决的方式:

  1. 遇到错误就终止程序的运行
  2. 程序员在编写程序时就考虑到异常的检测,给出错误消息的提醒,以及对异常的处理

java是面向对象的,java中的异常也是一个对象,有专门的异常类,我们要把异常这个对象捕捉住,就相当于你在处理这个异常

  • 捕捉异常==处理异常

  • 处理异常最理想的时间是在编译期间,但有的错误只有运行时才会发生

在API中有一个类叫做Error,有一个类叫做Exception,它们两个有一个共同的父类Throwable
在异常部分顶级的异常就是Throwable
  • Error我们一般不进行处理

这里我们主要讨论Exception

  • 而Exception又分为编译时(编译时Exception)异常和运行时异常(运行时Exception)
编译时异常又称为:受检异常(checked)
运行时异常又称为:非受检异常(unchecked)
  • Error也是运行时异常,也称为非受检异常

    异常大家庭关系图见画图笔记

Throwable类的全类名

java.lang.Throwable

Error类的全类名

java.lang.Error

Exception类的全类名

java.lang.Exception

常见的编译时异常(checked)

​ ---------IOException

​ ---------FileNotFoundException

​ ---------ClassNotFoundException

常见的运行时异常(unchecked)

​ ---------NullPointerException(空指针异常)

​ ---------ArrayIndexOutOfBoundsException(数组下标越界)

​ ---------ClassCastException(类型装换异常)

​ ---------NumberFormatException(格式转换异常)

​ ---------InPutMismatchException(Scanner输入格式不兼容

​ ---------ArithmeticException(算数异常)

面试题举例:常见的一场都有哪些?

  • 这里我们举例时就要先分为Error和Exception,然后再在Exception里面分为编译时异常和运行时异常其具体分析

异常的处理:

异常处理方式一

try — catch ---- finally

  • 这种方式就相当于狼来了,自己感觉可以解决,直接自己解决掉
  • 上面的狼就表示异常

异常的处理方式二

throws + 异常类型

  • 这种方式就相当于狼来了,但是自己解决不了,就要用throws把这个问题抛给更厉害的人,让厉害一点的人去再过自己的try ------ catch ------ finally去解决这个狼,如果还是解决不了的话就可以继续将这个狼通过throws抛给更加厉害的人去使用他的try ----- catch -----finally去解决.
  • 如果抛到最后还是没能将这个异常解决的话,到最后这个异常还是会跑到main方法中来,最后就会交给java虚拟机(jvm)去解决,然后jvm肯定就会报出异常,然后用户看到异常头都大了
  • 上面的狼也表示异常
throws也算成了一种处理异常的方式,但是它本质上并没有解决异常,它只是把这个异常向上报了,也算是处理了,而其实try —catch----finally才是真正的处理方式,它才会去真正的解决异常

java的异常处理:抓抛模型

抓抛模型分为两个过程:

过程一:抛

程序正在执行的过程中,一旦出现异常就会在出现异常的代码处生成一个异常类的对象,并将此对象抛出

  • java是一门面向对象的语言,java将异常也编写成了一个异常类
  • 一旦抛出异常类的对象以后,其后的代码将不再执行
过程二:抓

可以理解为异常的处理方式

  1. try----catch-----finally
  2. throws
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值