java异常分类和处理方式

异常的概念

首先,java中的异常是以类的形式存在的,也就是说,每一种异常实际上都是一种特殊的类。
这里根据百度开发者社区的定义可以验证:Java异常体系主要由Throwable类及其子类构成。Throwable是所有错误和异常的超类,它有两个直接子类:Error和Exception。(其实不严格的来说有三个,Exception可以分为检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions))
那我们先分析一下异常的类型

Error

表示严重问题,比如内存溢出这种,这类错误通常是由JVM本身的问题引起的,无法预测或处理。所有一般也不会去捕获这个异常。

Exception

Checked Exception 检查型异常

要求在被一个方法抛出来时,调用这个方法的代码就必须处理这些异常,否则就会报错比如IOException和SQLException这些。

Unchecked Exceptions 非检查型异常

非检查型异常指的是像空指针这种,由程序员人为逻辑错误或者程序bug导致的异常。

异常的三种处理方式

1,异常抛出,像这里抛出一个自定义的异常

String[] array = new String[2];
int check = 2;
if(check>=2){
	throw new MyException("数组越界");
}

2,异常捕获(tyr-catch)

try {
	String[] array = new String[2];
	array[2] = "123";
} catch (ArrayIndexOutOfBoundsException e) {
	System.out.println("发生了数组越界,位置: "+e.getMessage());
}

3,异常声明,像这个方法在后面的编写里可能会抛出某些异常,但是现在并不想在内部处理,就可以用throws关键字先抛出。

public void test2() throws Exception{}

五个关键字

1,try

用于定义一个代码块,通常是可能会抛出异常的代码,一般连接着catch和finally

2,catch

定义一个包含处理这个异常情况的代码,每个catch都指定了一种或者多种异常类型,如果抛出的错误与捕获的类型相匹配则执行。

3,finally

定义一个无论如何都会执行的代码块,通常用于检查连接或者释放资源。

Try-catch-finally举例:

int len = 2;
String[] array = new String[len];
try {
	array[len] = "123";
	System.out.println(array[len]);
} catch (ArrayIndexOutOfBoundsException e) {
	System.out.println("发生了数组越界,位置: "+e.getMessage());
	System.out.println("末尾应该是len-1");
} finally {
	System.out.println("无论如何,这段代码都会执行,会有语句输出。");
}

4,throw

抛出异常,可以抛出一个新的异常也可以重写抛出一个已经捕获过的异常,这样后面在捕获异常的时候,如果类型相同,就会使得控制流转移。像这样,如果后面捕获(Exception e),那么就会跳转到处理语句块。

throw new Exception("一个新的错误");

5,throws

不同于前一个,这是声明一个方法可能会抛出的异常,提醒后续调用的人可以把这个方法的异常抛出或者捕获处理。

public class FileException {
    public static String FileException(String file) throws IOException{
        return file;
    }
}
  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值