异常类的定义、种类、抛出、声明和捕获

目录

异常类定义

异常处理的必要性

异常处理

Java常见异常种类

1、Error

2、Exception

(1)运行异常类Runtime_Exception

(2)非运行异常类Non_RuntimeException

常见异常类

抛出异常throw

使用格式

声明异常throws

声明异常格式:

捕获异常try…catch…finally

try-catch-finally语句的格式


异常类定义

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。

异常处理的必要性

所有的程序都存在一些未知的问题或是错误,如果这些问题不进行处理,可能会给用户造成一定的损失。

异常处理

程序中一旦有异常发生,则会执行提前准备好的一段代码,减少损失,不会中断程序。

Java常见异常种类

1、Error

Error类代表了编译和系统的错误,不允许捕获。只能通过修改代码来解决问题。

2、Exception

(1)运行异常类Runtime_Exception

运行异常类对应于编译错误,它是指Java程序在运行时产生的由解释器引发的各种异常。运行异常可能出现在任何地方,且出现频率很高,因此为了避免巨大的系统资源开销,编译器不对异常进行检查。所以Java语言中的运行异常不一定被捕获。出现运行错误往往表示代码有错误,如:算数异常(如被0除)、下标异常(如数组越界)等。

(2)非运行异常类Non_RuntimeException

非运行异常时Non_RuntimeException类及其子类的实例,又称为可检测异常。Java编译器利用分析方法或构造方法中可能产生的结果来检测Java程序中是否含有检测异常的处理程序,对于每个可能的可检测异常,方法或构造方法的throws子句必须列出该异常对应的类。在Java的标准包java.lang java.util 和 java.net 中定义的异常都是非运行异常。

常见异常类

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException

输入输出异常:IOException

方法未找到异常:NoSuchMethodException

抛出异常throw

在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。

在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。

如何操作抛出一个异常。

  1. 创建一个异常对象。封装一些提示信息(信息可以自己编写)。

  2. 需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用者处呢?通过关键字throw就可以完成。throw 异常对象。

throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。

使用格式

throw new 异常类名(参数);

声明异常throws

将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理(稍后讲解该方式),那么必须通过throws进行声明,让调用者去处理。

关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常)。

声明异常格式:

修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{   }

捕获异常try…catch…finally

Java 使用 try-catch 语句来处理异常,将可能出现的异常操作放在try-catch 语句的try 部分,一旦try 部分抛出异常对象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try 部分将立刻结束执行,转向执行相应的 catch 部分。所以程序可以将发生异常后的处理放在catch 部分。try-catch 语句可以由几个catch 组成,分别处理发生的相应异常。分别处理发生的相应异常。还可以加上 finally 语句。

如果异常出现的话,会立刻终止程序,所以我们得处理异常:

  1. 该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。
  2. 在方法中使用try-catch的语句块来处理异常。

try-catch-finally语句的格式

try{
  包含可能发生异常的语句
}
catch(ExceptionSubClass1  e){
 ...
}
catch(ExceptionSubClass2  e){
 ...
}
finally{
 //最终处理方式
 //一定会被执行的语句
}

各个catch 参数中的异常类都是 Exception 的某个子类,表明try 部分可能发生的异常,这些子类之间不能有父子关系,否则保留一个含有父类参数的 catch 即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值