异常-总结

什么是异常呢,异常就是程序出现了错误

那我们处理异常有什么方式呢,还有个点,我们在处理异常的时候对编译异常和运行异常有不同的处理方式

什么是编译异常、运行异常呢?

编译异常,同名字,就是编译的时候出现的错误

运行异常就是在程序运行的时候出现的异常

处理异常的方式

1、throws

格式:

public void 方法() throws 异常类名 {
    
}

  • 这个throws格式是跟在方法的括号后面的

  • 编译时异常必须要进行处理,两种处理方案:try...catch …或者 throws,如果采用 throws 这种方案,在方法上进行显示声明,将来谁调用这个方法谁处理

  • 运行时异常因为在运行时才会发生,所以在方法后面可以不写,运行时出现异常默认交给jvm处理

2、try...catch …

格式:

try {
    可能出现异常的代码;
} catch(异常类名 变量名) {
    异常的处理代码;
}

在使用try...catch …的注意点,要把可能出现异常的代码放在try中,当遇到异常的时候,就会进入catch中,这个时候,出现异常代码后续的代码不会在执行,当执行完catch中的代码之后,try...catch …之后的代码还是会执行的

3、throw

我记得我才学的时候就有点分不清throws和throw

throws是处理编译异常的,位置是在方法名称的后面,方法不进行处理异常,谁调用这个方法,谁处理异常

而throw是在方法内部的 ,格式是:throw new 异常();表示是抛出一个异常,下面的代码就不会再执行啦

Exception和Error的父类

Throwable

它的常用方法:printStackTrace(把异常的错误信息输出在控制台 )

还有一种特殊的异常(自定义异常)

  • 实现步骤

    1. 定义异常类

    2. 写继承关系

    3. 提供空参构造

    4. 提供带参构造

格式:

public class AgeOutOfBoundsException extends RuntimeException {
    public AgeOutOfBoundsException() {
    }

    public AgeOutOfBoundsException(String message) {
        super(message);
    }
}

这个时候我们就可以使用throw 来手动抛出我们的自定义异常

在项目中常遇到的异常:

public class AgeOutOfBoundsException extends RuntimeException {
    public AgeOutOfBoundsException() {
    }

    public AgeOutOfBoundsException(String message) {
        super(message);
    }
}

我们常见的一些异常:

1、算术异常类:ArithmeticException

2、空指针异常类:NullpointerException

3、类型强制转换异常:ClassCastException

4、下标越界异常:IndexOutOfBoundsException

5、文件未找到异常:FileNotFoundException

6、操作数据库异常:SQLException

7、I/O 异常的根类:IOException

8、线程中断:InterruptedException
9、试图将错误类型的对象存储到一个对象数组时抛出的异常:ArrayStoreException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一些异常练习题以及实验总结: 1. 编写一个程序,要求实现两个整数相除的功能,如果分母为0,抛出一个自定义的异常。 ```java class MyException extends Exception { public MyException(String message) { super(message); } } public class Divide { public static void divide(int a, int b) throws MyException { if (b == 0) { throw new MyException("除数不能为0!"); } else { System.out.println(a / b); } } public static void main(String[] args) { try { divide(8, 2); divide(8, 0); } catch (MyException e) { System.out.println(e.getMessage()); } } } ``` 2. 编写一个程序,要求实现对一个数组的操作,如果数组下标越界,抛出一个自定义的异常。 ```java class MyException extends Exception { public MyException(String message) { super(message); } } public class ArrayTest { public static void arrayTest(int[] arr, int index) throws MyException { if (index < 0 || index >= arr.length) { throw new MyException("数组下标越界!"); } else { System.out.println(arr[index]); } } public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; try { arrayTest(arr, 2); arrayTest(arr, 5); } catch (MyException e) { System.out.println(e.getMessage()); } } } ``` 实验总结: 在 Java 中,异常是一种处理错误的机制。当程序出现错误时,异常会被抛出,如果没有被处理,程序就会崩溃。因此,我们需要在程序中使用 try-catch 块来捕获异常并进行处理。同时,Java 也提供了一些标准的异常类,比如 NullPointerException、IndexOutOfBoundsException 等等,我们可以使用这些类来处理常见的异常情况。如果需要自定义异常,可以继承 Exception 类或其子类,并重写构造方法。在处理异常时,我们可以使用 getMessage() 方法来获取异常信息,也可以使用 printStackTrace() 方法来输出异常信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值