java异常处理

本文为博主原创,更多好文章请点击这里

异常
  • 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序的运行
  • 如果异常出现了,没有得到相应的处理的话,程序就会被中断,不会继续往下执行了
异常的处理
  • try–用来监测可能出现异常的代码块【把你认为可能出现异常的代码段放入try{}语句块里】

  • catch–用来捕获发生的异常,如果异常类型相匹配则进入catch{}块进行相应的处理,如果异常类型不匹配,则不进入catch{}块处理,此时程序会中断。

    注意:只要异常没有得到相应的匹配处理,则程序会中断,反之,程序继续运行

异常处理的3种情况
  • 程序正常运行,此时没有异常,不进入catch{}块处理,而是会继续catch{}块后面的代码
  • 程序出现了异常,并且异常的类型和catch()中定义的类型相匹配,则进入catch{}进行相应
    的处理,处理完了,继续后面代码的运行
  • 程序出现了异常,但是异常的类型和catch()中定义的类型不匹配,此时程序不进入catch{}块处理,相当于,异常没有得到处理,程序会中断,不会继续往后执行
常用的显示方法
  • System.err.println(“”); 放在异常处理块中用来打印自定义的信息
  • printStackTrace() 打印异常处理的堆栈信息
  • getMessage() 获取异常描述的字符串信息,若没有则返回null
常见的异常类型
  • ArrayIndexOutOfBoundsException 数组越界的异常
  • ClassNotFoundException 无法加载指定的类
  • ArithmeticException 算术出错异常 【除数为0了】
  • NullPointerException 空指针异常
  • IllegalArgumentException 方法接收到非法的参数
  • ClassCastException 对象强制类型转换出错
  • NumberFormatException 数字格式转换异常,如把”abc”转换成数字
finally块的作用
  • 它放在catch{}块之后,无论是否出现异常,finally块中的代码都会被执行,唯一不执行的情况就是在finally块之前出现了System.exit(1)的系统退出语句。

注意:如果在catch{}块中出现了return 语句,程序会先执行完return语句之前的语句,再
执行finally块中的语句,跑完finally块再回到return语句。所以在catch{}块加入return语句,对finally块的执行没有影响

多重catch块的排列
  • 排列的时候,异常类型一定是先子类再父类
  • 运行时只要匹配到一个catch()块里的异常,则其他的catch{}里的代码就不会被执行了

注意:Exception类是其他异常类的父类

throws关键字
  • 声明某个方法可能抛出的异常,多个异常之间用逗号隔开
  • throws关键字用在方法声明的地方,并且抛出的是异常的类型

    注意声明的位置!!!方法的()后面{}前面

  • 语法:

public static void test4() throws FileNotFoundException,IOException
{


}
throw关键字
  • 用在方法中的代码块中,自定义异常对象并抛出
  • throw 抛出的是一个异常对象,且每次只能抛出一个,而throws抛出的是异常的类型,可以抛出多个异常类型,之间用逗号隔开
异常的分类
  • 运行时异常—不要求程序必须做出处理,它是在程序运行的时候才会发生
  • checked异常[检查时异常]—要求程序必须做出处理,在代码编写的阶段就要处理,
    否则编译不过。处理的方式有2种,要么自己处理,要么使用throws关键字声明方法往外抛
自定义的异常
  • 语法格式:
throw new Exception("自定义异常的内容");

本文为博主原创,更多好文章请点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值