异常
1、异常的定义
- 异常指的是程序运行中出现的各种状况,如:文件找不到、网络连接失败、非法参数等等;
- 异常是发生在程序运行期间,它影响了正常的程序的执行流程;
1、Throwable 异常的总接口
-
java把异常处理当成对象类处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类(基类 - 类似于object情况)
-
java异常分为两大类Error 和 Exceptiong;
- Exception
- IOException IO异常
- FileNotFoundException (文件找不到异常)
- EOFException
- RuntimeException 运行时异常
- ArrayIndexOutOfBoundException (数组下标越界)
- NullPointerException (空指针异常)
- ArithmeticException (算数异常)
- MissingResourceException(丢失资源)
- ClassNotFoundException(找不到类)
- IOException IO异常
- Error
- VirtulMachineError 虚拟机错误
- AWTError 图形界面编程错误
- Exception
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虚拟机正常运行期间抛出的异常的超类。