java之认识异常

在 Java 中,异常(Exception)用于处理程序运行时出现的错误或异常情况。Java 的异常处理机制基于 try, catch, finallythrow 关键字。

1.异常的分类:

1.1:检查型异常(CheckedException):

定义:程序在编译期间发生的异常,是编译器要求必须处理的异常。

处理方法:使用try-catch块处理,或在方法中使用throws处理抛出异常

Ex1:IOException     ClassNotFoundException

try {
    // 可能抛出检查型异常的代码
    FileReader file = new FileReader("file.txt");
} catch (IOException e) {
    // 异常处理代码
    e.printStackTrace();
}

1.2:非检查型异常(Unchecked Exceptions)/运行异常:

定义:在程序执行期间出现的异常,称为运行时异常,也叫非检查类型异常。

Ex2:NullPointerException(空指针异常)ArrayIndexOutOfBoundsException(数组越界异常)ArithmeticException(算术异常)

处理方法:可通过Try-Catch 进行捕获和处理。

try {
    int result = 10 / 0; // 可能抛出 ArithmeticException
} catch (ArithmeticException e) {
    // 异常处理代码
    e.printStackTrace();
}

2.异常处理的基本结构:

2.1  try-catch 块:

 try块:可能包含抛出异常的代码。

catch块:用于捕获异常

try { 

    // 可能会抛出异常的代码

 } catch (ExceptionType e) { 

    // 处理异常的代码

}
// 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型一致时,或者是try中抛出异常的基类 时,就会被捕获到
// 对异常就可以正常处理,处理完成后,跳出try-catch结构,继续执行后序代码

2.2: finally块:  finally块是可选的,它包含在 try 块之后,不论是否发生异常,finally 块中的代码总会执行。通常用于资源的清理工作,如关闭文件流等。

try {
    // 可能会抛出异常的代码
} catch (ExceptionType e) {
    // 处理异常的代码
} finally {
    // 总会执行的代码
}
// 后序代码
// 当异常被捕获到时,异常就被处理了,这里的后序代码一定会执行
// 如果捕获了,由于捕获时类型不对,那就没有捕获到,这里的代码就不会被执行

2.3 throw 和 throws :

throw 关键字:抛出一个指定的异常对象,将错误信息告知给调用者。在方内法部抛出异常。
Ex3:
throws关键字:处在方法声明时参数列表之后,当方法中抛出编译时异常,用户不想处理该异常,此时就可以借助throws 将异常抛给方法的调用者来处理。即当前方法不处理异常,提醒方法的调用者处理异常
语法格式:
修饰符 返回值类型 方法名(参数列表) throws 异常类型1,异常类型2...{
}

EX4:

注:

1. throws必须跟在方法的参数列表之后
2. 声明的异常必须是 Exception 或者 Exception 的子类

3. 方法内部如果抛出了多个异常,throws之后必须跟多个异常类型,之间用逗号隔开,如果抛出多个异常类型具有父子关系,直接声明父类即可。

EX5:

public class Config {
File file;
// public void OpenConfig(String filename) throws IOException,FileNotFoundException{
// FileNotFoundException 继承自 IOException
public void OpenConfig(String filename) throws IOException{
if(filename.endsWith(".ini")){
throw new IOException("文件不是.ini文件");
}
if(filename.equals("config.ini")){
throw new FileNotFoundException("配置文件名字不对");
}

4. 调用声明抛出异常的方法时,调用者必须对该异常进行处理,或者继续使用throws抛出。

EX6:

3.异常处理流程的总结:

1.程序先执行 try 中的代码
 2.如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.
3.如果找到匹配的异常类型, 就会执行 catch 中的代码
4.如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.
5.无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行).
6.如果上层调用者也没有处理的了异常, 就继续向上传递.
7.一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止.
4.自定义异常类:
  创建自己的异常类,通常继承自 Exception或其子类 RuntimeException
public class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

异常处理机制的例子:

这就是今天要介绍的基本知识,喜欢的老友们来个三连吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值