异常知识点----自我总结

异常定义

异常是指在程序运行中导致程序行中断的指令流。 发生异常的程序在代码没执行完成便会退出,不再执行其后面的语句。

异常表现:
在这里插入图片描述
当输入的不是数字或是第二个输入为0时会发生异常
在这里插入图片描述
在这里插入图片描述
这只是简单的输入异常和算术异常。

异常体系结构

异常指的是Exception , Exception类, 在Java中存在一个父类Throwable(可抛出)
Throwable存在两个子类:
1.Error:表示的是错误,是JVM发出的错误操作,,是程序出现的错误问题,只能尽量避免,无法用代码处理。
2.Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。

对于异常分类我们可以分为两个类:
一、是受检异常,是在代码编写过程中出错位置发生报错,又称为非运行异常,是RuntimeException以外的异常
二、是非受检异常 是不受检查的检查不出,一旦运行就报错 ,又称运行时异常,都是RuntimeException类及其子类异常
如图:Throwable 是所有异常类的祖先
在这里插入图片描述

异常处理

在编译运行中我们所能遇到各种异常需要怎么处理?

一、异常捕获
  1. try-catch 格式
    try{
    // 有可能发生异常的代码段
    }catch(异常类型1 对象名1){
    // 异常的处理操作
    }catch(异常类型2 对象名2){
    // 异常的处理操作
    }
    … finally{
    // 异常的统一出口
    }
    可以有多个catch块用来处理try块捕获的异常,在对应的catch块里异常类型要与相应的异常响应,否则没办法进行处理。
    这里的finall块是必须执行的一部分,无论是否捕获以及处理了异常,finall块里的语句都是需要被执行的
  2. finally块是否执行的情况,有以下几点;
    1.软件非正常执行完毕,关机、没电、内存里没有程序了,CPU关闭等 此时不执行
    2.剩下的情况finally都是要执行的 有return 也会执行
    3.以下这种情况是不会执行finally 的 这是唯一一种在代码块里会导致不执行finally的操作 在前面的代码块里有System.exit()。此时程序退出,故不再执行finally块里的代码。
    在这里插入图片描述
    4.Finally执行 离不开的两个点 一个是必然不执行,一个是return 的时机
二、抛出异常

抛出异常使用的是throws 、throw关键字;
异常抛出是把一个无法处理的异常层层上传抛出,一层一层的抛给上一个调用者,直到传回JVM,JVM中断程序。这种向上抛出异常的方法,如果JVM也处理不了,就会结束系统,无法处理。

throws关键字抛出异常

此关键字主要在方法的声明上使 用,表示方法中不处理异常,而交给调用处处理。

格式:返回值 方法名称()throws Exception{ }
Exception是所有异常的父类,如果声明的异常是Exception则表示抛出所有异常。如果抛出的一场有多个,可以把每个异常用逗号隔开。

throw关键字抛出异常

throw关键字表示在程序中人为的抛出一个异常,因为从异常处理机制来看,所有的异常一旦产生之后,实际上抛出 的就是一个异常类的实例化对象,那么此对象也可以由throw直接抛出。throw是在方法中抛出异常,且只能抛出一个异常

什么情况下需要抛出异常throws?
如果是因为传参导致异常 , 应该通过throws将异常抛出去

一个个人感觉很不错的异常知识总结博客

https://blog.csdn.net/qq_29229567/article/details/80773970

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值