异常

3 篇文章 0 订阅

一、异常概述

注意!异常不等同于错误

在程序运行过程中,经常会出现一些意外的情况,这些意外会导致程序出错或者崩溃,从而影响程序的正常执行,如果不能很好地处理这些意外情况,程序的稳定性就会受到质疑。在Java语言中,这些程序意外称为异常,出现异常时的处理称为异常处理,合理的异常处理可以使整个项目更加稳定,也可以是项目中正常的代码和错误处理的代码实现分离,便于代码的阅读和维护。

异常引入:比如说,程序员定义的数组长度是3,而在使用数组时,却访问了下标为3的第4个数组元素,所以程序出现异常。

二、异常分类

  • Throwable,所有异常都继承自java.lang.Throwable类,Throwable类有两个直接子类:Error类和Exception类。
  1. Error类是Throwable类的子类,是Java应用程序本身无法恢复的严重错误,应用程序不需要捕获、处理这些严重错误。当程序发生这种严重错误时,通常的做法是通知用户并中止程序的执行。
  2. Exception是由Java应用程序抛出和处理的非严重错误,我们称之为异常。异常可分为运行时异常(RuntimeException)和检查时异常(CheckedException)两种。

RuntimeException,运行时异常即程序运行时抛出的异常,不要求程序员在编程时必须对这些异常进行处理,也能编译通过。

Exception in thread "main" java.lang.ArithmeticException: / by zero
        at App.main(App.java:15)

CheckedException,检查时异常又称为非运行时异常,这样的异常要求程序员必须在编程时进行处理,否则就会编译不通过。例如

App.java:24: error: unreported exception FileNotFoundException; must be caught o
r declared to be thrown
        FileReader fr=new FileReader("F:\\aa.txt");
                      ^
1 error

为什么运行时异常不需要预先处理,而检查时异常就必须要预先处理?

  1. 运行时异常发生概率较低
  2. 检查异常发生概率较高

三、基本异常处理

Java对异常的处理采取的是抛出、捕获的机制,即由一段可能抛出异常的程序抛出异常(也可能正常运行,不抛出异常),在这段程序外有专门的异常处理程序进行处理,针对抛出的不同类型的异常捕捉后进行理,这就是Java异常处理机制。

Java异常处理机制的语法形式如下:

try{
	//可能抛出异常的语句块
	}catch(SomeException1 e)//SomeExeception1 特指某些异常,非Java中具体异常,下同
	{						//按住Ctrl,然后鼠标左键点击可能抛出异常,便知道SomeException是什么
	//当捕获到SomeException1类型的异常时执行的语句块
	}catch(SomeException2 e)
	{
	//当捕获到SomeException2类型的异常时执行的语句块
	}finally{
	//无论是否发生异常都会执行的代码
	}						
}

接下来还是从程序开始,看看如如编写异常处理程序

/**
 * @ClassName TestEX5
 * @Description: TODO
 * @Author YingFengli
 * @Date 2021/2/21/021
 * @Version V1.0
 **/
public class TestEX5 {
    public static void main(String[] args) {
        try {
            String teachers[]={"刘海龙","孙传杰","孙悦"};
            for(int i = 0;i < 4; i++){
                System.out.println(teachers[i]);
            }
        }catch (Exception e){
            System.out.println("数组下标越界,请修改程序!");
        }
        System.out.println("显示完毕!");
    }
}

其运行结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值