一、异常的概念
如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下,会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。
二、异常的分类
借鉴一个网上找到的图来进行说明:
异常分为:Error和Exception,它们都继承自Throwable。
//Error类
public class Error extends Throwable {
//Exception类
public class Exception extends Throwable {
Exception 可分为 运行时异常(RuntimeException) 和 检查异常(CheckedException)
RuntimeException:如 NullPointerException 、 ClassCastException
CheckedException:如 IOException、SQLException
三、异常的处理方式
throw、throws、系统自动抛出异常
- 1、throw用于抛出异常,在方法内部通过throw抛出异常对象。
public static void main(String[] args) {
String s = "hello";
if (s.equals("hello")){
throw new NumberFormatException();
}else{
System.out.println(s);
}
}
- 2、throws关键字可以在方法上声明该方法要抛出的异常。
public static void main(String[] args) throws RuntimeException{
-
3、try…catch…finally
try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。cacth用于捕获从try中抛出的异常并作出处理。
finally语句块是不管有没有出现异常都要执行的内容。
public static int del(){
int a = 0;
try { //用于捕获异常
int b = 10/a;
return b;
}catch (Exception e){ //执行try捕获到的异常
return 1;
}finally { //有没有异常都要执行
return 2;
}
}
最终输出结果为:2
四、throw和throws的区别
- 1、使用的位置:throws用在函数方法上,后面跟的是异常类;throw用在函数内,后面跟的是异常对象。
- 2、throws表示出现异常的一种可能性,并不一定会发生异常;throw则是抛出了异常,执行throw则一定要抛出了某种异常对象。
- 3、throws用来声明异常,让调用者只知道该功能可能出现问题,可以预先的处理方式;throw抛出具体的问题对象,执行到throw,功能就已经结束了。