当前位置: 首页 > biancheng >正文

java 异常

一、什么是异常:

异常并不是指程序出错。

java在程序运行过程中,遇到的意外情况,程序本身不知道如何去解决,将这个异常捕获、做处理的一种机制。

异常使用有两种情况,

1、就是程序根据不同的异常,做不同的处理(try ..catch)

2、就是将异常抛出来,再做处理,比如输入用户名密码时,用户不存在,抛出异常给前端页面,前端页面在根据异常情况,提示用户相应的错误信息。

二、异常体系

 如上图,异常Exception错误Error都继承于Throwable。

错误Error是我们处理不了,异常Exception是需要我们处理的。

异常Exception又分为运行时异常RuntimeException受检异常CheckedException

2.1 受检异常

RuntimeException及其子类,都是非受检异常。其他类都是受检异常。

未处理声明的异常(这个异常是可能抛出的),在编译的时候就会报错(在idea里直接报红)。

简单点说:就是在idea写程序时,如果没有对某个可能抛出的异常/声明的异常做处理,那么这一块代码就会报红。

举个例子:

new FileInputStrem("")文件流这歌个类时,系统提示爆红了,因为 没有对FileInputStrem这个类的异常做处理。

查看FileInputStrem源码:

 在定义FileInputStrem这个类时,声明了一个FileNotFoundException异常( 文件找不到的异常)

我们需要对这个异常做处理。

这个异常不是一定发生的,是可能发生的,如果读取文件的时候,这个文件存在,肯定不会出现异常,但是如果文件被删除了,或者文件名字写错了,那读取文件的时候肯定找不到这个文件,发生错误。

处理方式:1、继续将这个异常向上抛出,2、try catch 处理这个异常。

2.2 非受检异常/运行时异常

非受检异常,也被称为运行时异常。在程序运行时,才会报异常。在编译的时候,不会报异常。

System.out.println(1/0);

在编译的时候,程序不会报异常,当程序运行时,才会报异常。0是不可以做分母的。

 三、对异常的处理

处理异常的两种方式:

1、try catch 对异常做处理

2、继续向上抛出异常(谁调用,谁再来处理这个异常)

处理原则:能处理就处理,不能处理再向上抛出。

3.1 try catch


public class ExceptionDemo {
    public static void main(String[] args) {
        f();
        try {
            g();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e){
            
        }
    }

    public static void f() throws RuntimeException{

    }

    public static void g() throws FileNotFoundException{

    }
}

try 包裹的是有可能抛出异常的代码。

catch 捕获异常,然后处理。可以有多个catch,根据catch捕获的不同的异常,做相应的处理。

注意:

catch可以有多个,捕获的异常。当多个异常有继承关系时,父类一定要写在子类的下面,不然就回报错。

如FIleNotFoundException 继承于Exception,当Exception写在上面时,会报错。

四、异常的应用 

相关文章:

  • Linux云服务器安全性:如何防范DDoS攻击
  • Allegro_PCB封装创建
  • oracle学习之路(5)Navicat连接Oracle数据库:Oracle library is not loaded 解决方案
  • Wireshark使用教程
  • php彻底解决前端post传递过来的数组decode为null的问题
  • Java中类的加载过程(类的生命周期)详解
  • Mybatis(三):特殊SQL的执行
  • 一篇搞定神经网络(基础篇)
  • Framework事件机制—Event Hub原理及事件解析
  • 求最大公约数和最小公倍数,附python实现