异常(上)概述,捕捉异常,try-catch语句的详细使用

本文详细介绍了Java中的异常概念,包括异常的分类、自动捕捉、try-catch语句的使用以及finally代码块的恢复机制。重点讲解了如何通过try-catch处理编程中的问题和错误,确保程序的稳定运行。
摘要由CSDN通过智能技术生成

文章目录


前言

        该文介绍了Java异常的概述,运行代码时,异常的捕捉,及其使用 try-catch语句的处理。Java自带自动捕捉异常,但try-catch语句可以让我们更加便利地应对代码中的问题。


一、异常是什么?  

        异常概述:

        (1)程序中的异常:程序员没有预料到的情况,或者超出程序员控制的情况。

        (2)异常的分类:

                Exception(非致命异常)

                       定义:Exception 是会影响程序正常运行,但可以被解决的问题。

                       例如:RuntimeException 在Java虚拟机正常运行期间抛出异常的类。

public class Demo{
    public static void main(String[] args){
        Object obj = null;
        //运行时错误:空指针异常
        System.out.println(obj.hashCode());
    }
}

                       运行结果:

                Error(致命错误)

                        定义:不应该试图捕获的严重错误。

                        例如:

                                a.字节码文件无法解析

                                b.Java虚拟机资源耗尽        

                                c.配置文件格式不规范

                      解决方法:1.重新编写程序

                                        2.重新分配系统资源(重启)

                      例如(代码编写时的严重错误):

public class Demo{
    public static void main(String[] args){
    System.out.println(“你好”)
    //致命性错误,没有分号结尾。
    }

}

                 运行结果:

二、捕捉异常

1.自动捕捉异常

        运行后,java API中自动捕捉并在控制台中显示报错的异常

        例如:

2.try-catch语句捕捉异常

         定义:try-catch 语句用于处理代码中可能出现的错误信息。 错误可能是语法错误,通常是程序员造成的编码错误或错别字。 也可能是拼写错误或语言中缺少的功能。

         语法:

try{

    //被捕获的代码

}catch(异常类型 e){

    //对异常的处理

}

          实例:

public class Demo{
	public static void main(String[] args) {
		try {
			for(int i = 0;i<5;i++) {
				System.out.println("输出"+i+"行");
				int a = 1/i;
                //发生运算异常的代码,i = 0 时,除数为0,运算异常。
			}
		}catch(Exception e){
			System.out.println("发生了异常,请管理员尽快处理!");
            //做出代码异常的反馈
		}
}

          运行结果: 

                注:

                       a.只能反馈或修改非致命的异常,Error错误无法解决。

                      b.最好在catch代码块中写入处理异常的代码,不要省懒事,不然发生时很难查找出来。

        catch代码块中处理异常常用的3个函数:

              getMessage()函数:输出错误性质。

              toString()函数:给出异常的类型与性质。

              printStackTrace()函数:指出异常的类型、性质、栈层次及出现在程序中的位置。

        a.多重try-catch代码块        

                语法:

try {
		//some codes
}catch(some Exception1 e){
		//some codes
} catch(some Exception2 e){
		//some codes
} catch(some Exception3 e){
		//some codes
}

         运行逻辑:try语句中发生的每一个异常,依次对照每个catch语句的异常类型,直到输出对应的catch语句,反馈或者解决异常。

        实例:

public class Demo {
	public static void main(String[] args) {
		try {
			int a = 1/0;
			//该行代码具有算数异常
		}catch(NullPointerException e) {
			System.out.println("发生了空指针异常,请管理员及时处理!");
		}catch(ArithmeticException e) {
			System.out.println("发生了算数异常,请管理员及时处理!");
            //对应找到了属于算数异常的catch语句,反馈输出。
		}catch(ClassCastException e) {
			System.out.println("发生了类转换异常,请管理员及时处理!");
		}
	}
}

        输出结果: 

        b.异常的中断机制

                 解释:当try代码块中的语句发生异常时,程序就会调转到对应的catch代码块中执行,反馈或者解决问题,然后继续运行后面的代码

                 示例:

public class Demo {
	public static void main(String[] args) {

		for(int i = 0;i<5;i++) {
			try {
				System.out.println("输出"+i+"行");
				int a = 1/i;
			}catch(Exception e) {
				e.printStackTrace();
				System.out.println("发生了异常,请管理员尽快处理!");
			}
		}
	}
}

                运行结果: 

                 注:由图可见,发生异常反馈后,后续代码仍被执行。Java的异常处理是结构化的,不会因为一个异常影响整个程序的运行

        c.finally代码块恢复机制

                finally代码块:完整的异常处理语句,包含finally语句。无论try-catch语句是否顺利执行完毕,都会执行 finally 语句。往往用于程序崩溃后,保存崩溃前的工作内容。

                语法:

try{
	//被捕获的代码
}catch(异常类型 e){
	//对异常的处理
}finally{
	//最后一定会执行的代码
}

                实例:

public class Demop {
	public static void main(String[] args) {
		try {
			System.out.println("打开连接池");
			int a = 1/0;
			System.out.println("通过连接池读取数据");
		}catch(Exception e){
			System.out.println("打印堆栈跟踪异常,请管理员及时处理!");
			e.printStackTrace();
		}finally {
			System.out.println("系统提示:已保存工作内容");
			System.out.println("关闭连接池");
		}
	}
}

                运行结果: 

                由此可见,当代码运行异常时,finally代码块仍可以正常运行,可以实现及时自动保存的功能。 

finally块一般都会得到执行,但在以下四种情况中不会执行:

  1. finally块中的代码发生了异常。
  2. 在finally块前面中使用了System.exit() 方法,终止了程序运行。
  3. 程序所在线程死亡。
  4. 关闭CPU(电脑关闭)

总结

        以上就是对异常的概述,捕捉异常,try-catch-finally语句的解读。如果有什么疑问或者补充或纠错的内容,欢迎在评论区中留言,博主会及时做出反馈的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵果森森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值