5.异常简介+处理方式(finally+catch+throw+Exception)

一.异常简介

1.定义

程序运行过程出现的错误或意外

异常看作是一个类,根类是Throwable(属于Object超级类的子类)

2.作用

运行时发生的错误如果没有异常处理机制,程序将会终止并使所有已分配资源的状态保持不变,这样会导致资源泄露。

异常处理机制由编译器强制执行

3.异常分类

  1. Error

  2. Exception

    • RuntimeException程序有错

      ArithmeticException数字
      NullPointerException空指针
      NumberFolrmatException

      InputMismatchException非数字类型

    • 非RuntimeException编译期出错

      IOE,sql…

二.异常处理

1.产生过程

  1. thow抛出异常

    程序执行过程出现异常>>生成异常类

  2. catch捕获异常

    接受异常类对象>>寻找处理异常代码处理对象

  3. 未捕获退出程序

2.异常处理方式

  1. 捕获异常(快捷输入: ctrl+alt+t,选中内容)

    try{
       监控代码
    }catch(异常类型){
       处理语句
    }
    *   catch后面小括号中的类型可以是具体的异常类型,也可以是该异常类型的父类型。
    *   catch可以写多个,从上到下,必须遵守从小到大。
    *   建议catch的时候,精确的一个一个处理,有利于程序的调试
    
            try {//监控代码,JVM抛出异常
                int age = scanner.nextInt();
                if (age<18){
                    throw new Exception();
                }
            } catch (Exception e) {//接受异常
                throw new RuntimeException(e);
            }
       public static void main (String[] args) throws Exception {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入年龄:");
            try {//监控代码,JVM抛出异常
                int age = scanner.nextInt();
                if (age<18){
                    throw new Exception();
                }
            } catch ( InputMismatchException e) {//接受异常
                throw new RuntimeException(e);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
  2. 向上抛异常

    在方法名后面加上throws Exception…, 方法本身只是抛出异常,由函数调用者来捕获异常

1.try…catch…

try{
监控代码
}catch(异常类型){
处理语句
}

2.finally块

最后结尾处理

作用:

  • 异常处理模块必须执行的模块
  • 无条件执行操作
  • 每个try语句至少一个catch语句或finally语句
3.异常处理顺序

try>>catch>>finally

4.thows关键字
  • 向上抛

throws总是出现在一个方法头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员方法中抛出的异常的类型

public class EmployeeDaoImpl {
    public void queryById() throws ClassNotFoundException {//方法的头部
        Class.forName("");
    }
}
5.throw语句

throw关键字通常用在方法体中,并且抛出一个异常对象。

  • 程序在执行到throw语句时立即停止,它后面的语句都不执行。
  • 通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要抛出的异常;
  • 如果要捕捉throw抛出的异常,则必须使用try—catch语句
6.自定义异常

创建一个类来接受异常,并继承异常类(Exception…),命名时注意加上Exception驼峰命名法

JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常

7、throw 和 throws总结
  • throws说明你有哪个可能,倾向
  • throw的话,那就是你把那个倾向变成真实的了同时:
  • throws出现在方法函数头;而throw出现在函数体;
  • throws表示出现异常的一种可能性,并不一定会发生这些异常;
  • throw则是抛出了异常,执行throw则一定抛出了某种异常;
  • 两者都是消极处理异常的方式(这里的消极并不是说这种)
  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值