异常


异常

1、异常的定义

  • 异常指的是程序运行中出现的各种状况,如:文件找不到、网络连接失败、非法参数等等;
  • 异常是发生在程序运行期间,它影响了正常的程序的执行流程;

1、Throwable 异常的总接口

  • java把异常处理当成对象类处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类(基类 - 类似于object情况)

  • java异常分为两大类Error 和 Exceptiong;

    1. Exception
      • IOException IO异常
        • FileNotFoundException (文件找不到异常)
        • EOFException
      • RuntimeException 运行时异常
        • ArrayIndexOutOfBoundException (数组下标越界)
        • NullPointerException (空指针异常)
        • ArithmeticException (算数异常)
        • MissingResourceException(丢失资源)
        • ClassNotFoundException(找不到类)
    2. Error
      • VirtulMachineError 虚拟机错误
      • AWTError 图形界面编程错误

    1639797059154

2、处理异常的,五个关键字

  • try - 捕获异常

  • catch - 处理异常

  • finally - 在末尾,一定会执行

  • throw - 抛出一个具体的异常(一般在方法中使用)

  • throws - 抛出总异常

    捕获异常快捷键 - Ctrl + Alt + T

public class Exception01 {

    public static void main(String[] args) {
        int a = 1;
        int b = 0;

        try { // try 监控区域
            System.out.println(a/b);
        }catch (ArithmeticException e1){ // 捕获对应的异常
            System.out.println("程序异常,变量b不能为0");
        }catch (Exception e2){
            System.out.println("程序异常"); // 可以捕获多种异常,每种异常都可以设置成不同情况
        }// 捕获多个异常要重小到大的捕获,不然会报错
        finally { // finally 是一定会进行执行的,处理出现异常后程序后续处理 - finally可以看情况不用
            System.out.println("善后工作");// 例如关闭io流等操作都放在finally里面
        }
    }
}

3、自定义异常

  • 创建一个自定义的类,然后继承Exception 类
public class Exception01 {

    public static void main(String[] args) {
        try {
            test(11);
        } catch (MyException e) {
            System.out.println("输出异常:"+e);;
        }
    }
    // 定义个方法,抛出异常
    static void test (int a1) throws MyException {
        if (a1 > 10){
            throw new MyException(a1);// 方法中抛出我们定义的异常
        }
        System.out.println("正常");
    }
}

// 定义自己的异常
class MyException extends Exception{
    private int detail;
    // 通过构造器接收数据,然后进行处理判断
    public MyException(int a) {
        this.detail = a;
    }

    // 把我们传入的参数逻辑判断之后然后返回打印
    // toString :异常信息的打印  -- 这里可以自己做定义
    @Override
    public String toString() {
        return "我定义的异常{" +
                 + detail +
                '}';
    }
}

4、常见的异常类

  • NullPointerException:当应用程序试图访问空对象时,则抛出该异常。
  • SQLException:提供关于数据库访问错误或其他错误信息的异常。
  • IndexOutOfBoundsException:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
  • NumberFormatException:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
  • FileNotFoundException:当试图打开指定路径名表示的文件失败时,抛出此异常。
  • IOException:当发生某种I/O异常时,抛出此异常。此类是失败或中断的I/O操作生成的异常的通用类。
  • ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出该异常。
  • ArrayStoreException:试图将错误类型的对象存储到一个对象数组时抛出的异常。
  • IllegalArgumentException:抛出的异常表明向方法传递了一个不合法或不正确的参数。
  • ArithmeticException:当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
  • NegativeArraySizeException:如果应用程序试图创建大小为负的数组,则抛出该异常。
  • NoSuchMethodException:无法找到某一特定方法时,抛出该异常。
  • SecurityException:由安全管理器抛出的异常,指示存在安全侵犯。
  • UnsupportedOperationException:当不支持请求的操作时,抛出该异常。
  • RuntimeExceptionRuntimeException:是那些可能在Java虚拟机正常运行期间抛出的异常的超类。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM