异常

作者: There_7f76 | 来源:发表于2019-10-15 14:50 被阅读0次

异常Throwable

异常(Throwable).png

概念:

Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java 语句抛出。类似地,只有此类或其子类之一才可以是 子句中的参数类型。

特点:

Throwable是一个实体类:可以从他的构造方法和方法来以及他的子类看他的特性和属性。

Error

概述:

Error 是 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 错误是一个“正规”的条件,但它也是 的子类,因为大多数应用程序都不应该试图捕获它。

特点:

错误是无法处理的,必须改源码,就相当于某个机器的零件缺少或者是坏道了必须更换才能让机器正常运行。

Exception

概念:

Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。

特点:

  • 编译期异常:程序在编译器就报出的异常,这里需要我们先解决这个异常才能运行程序
  • 运行期异常:编译器不会报的异常,而是程序在执行到某段代码时才会报出的异常。

用法:

  1. throw关键字

    • 在指定的方法内部抛出指定的异常
    • 格式:throw new xxException("产生异常的原因");
    • throw方法后面new的必须是Exception类对象或者Exception类的子类对象
    • 当throw抛出这个异常的时候我们就要对其进行处理不然JVM会终止程序的运行的
      • 当new的对象是RuntimeException或者RuntimeException的子类对象时我们可以不进行处理默认交给JVM处理(打印异常对象,终止程序运行)
      • 当new的对象时编译器异常时,我们就要对其进行处理了。
        1. throws抛给调用者
        2. try ......catch捕获处理
public class Demo_Throw {
    public static void main(String[] args) {
        int [] array = null;
        int [] arr=new int[3];
        int index=0;
        int index1=4;
//        getElement(array,index);
        getElement1(arr,index1);
    }
    private static void getElement1(int[] arr, int index1) {
        if (index1<0||index1>arr.length){
            throw new IndexOutOfBoundsException("index索引越界");
        }
    }
    private static void getElement(int[] array, int index) {
        if (array==null){
            throw new NullPointerException("数组为空");
        }else {
            int value=array[index];
        }
    }
}
  1. throws关键字

    • throws:处理异常的一种方式,写在方法名后面。
    • 作用:将异常交给方法的调用者处理,如果他的调用者也不处理最后将会由JVM进行处理(打印异常类,终止程序)
    • 格式:修饰符 返回类型 方法名称(参数列表)throws XXXException,YYYException....{}
    • 注意:当throws后面接的异常对象有多个时,必须都要写上,如果这多个对象有子父类关系时,可以只写父类
public class Demo_Throws {
    public static void main(String[] args) throws IOException {
        demo("C;\\a.txta");
    }
    private static void demo(String fileName) throws IOException {
        if(!fileName.endsWith(".txt")){
            throw new IOException("file type error" );
        }else {
            System.out.println("file read OK");
        }
    }

}
  1. try....catch...finally捕获异常进行处理

    • 异常的第二种处理方式,当throw抛出异常时,我们用它进行捕获然后处理,这样不影响程序的后续执行,即不会终止程序,这也是开发中最推荐使用的一种方式。

    • 格式:

      try{
         可能出现异常的代码块
      }catch(异常类名 变量名){
          //这里可以使用自定义的异常类,但是自定义的异常类必须继承Exception才能使用
         这里对异常进行处理,一般时存入错误日志
      }finally{
         强制要执行的(无论程序是否出现异常都要执行的)
      }
      //这里的finally不是一定需要的,finally一般用来释放某种资源占用,它不能单独存在,必须依托try catch存在
      
    • 使用案例:

public class Demo_TryCatchFinally {
    public static void main(String[] args){
        try {
            demo("C;\\a.txta");
        }catch (IOException e){
            e.printStackTrace();//打印详细异常信息
        }finally {
            //释放IO资源
            System.out.println("成功释放资源");
        }

    }
    private static void demo(String fileName) throws IOException {
        if(!fileName.endsWith(".txt")){
            throw new IOException("file type error" );
        }else {
            System.out.println("file read OK");
        }
    }

}

总结

异常处理.png

相关文章

  • 异常和模块

    异常 目标 了解异常 捕获异常 异常的else 异常finally 异常的传递 自定义异常 一. 了解异常 当检测...

  • python多线程

    异常基础知识 -异常简介: 运行时错误 -异常类: 异常数据 异常名称,异常数据,异常类型 -自定义异常 clas...

  • dart 异常

    dart中的异常 异常处理 抛出异常 异常捕获

  • Java基础之异常

    Java基础之异常 目录 异常简单介绍 ThrowableErrorException 异常分类 如何处理异常异常...

  • python核心编程-错误与异常

    本章主题:什么是异常Python中的异常探测和处理异常上下文管理引发异常断言标准异常创建异常相关模块 什么是异常 ...

  • motan(RPC)系统梳理知识点

    异常分类: 业务异常(bizException) 服务异常(serviceException) 框架异常(fram...

  • 异常

    Java异常体系 异常的分类 Java的异常分为两大类:Checked异常和Runtime异常(运行时异常)。所有...

  • 从零构架个人博客网站(二)-全局异常处理

    中间件的异常 全局异常中间件全局异常监听定义异常的返回结果定义常见的异常状态开发环境 异常查看 对于异常,我们可以...

  • Node.js异常处理

    Node.js异常分类: 变量异常 函数异常 调用异常 变量异常 未定义变量 未包含对象 变量类型错误 函数异常 ...

  • python 异常

    异常 目标 异常的概念 捕获异常 异常的传递 抛出异常 01. 异常的概念 程序在运行时,如果 Python 解释...

网友评论

      本文标题:异常

      本文链接:https://www.haomeiwen.com/subject/ufjsmctx.html