java笔记之异常

1,121 阅读4分钟

前言

exception是java中的完美机制之一。方法在完成过程中由于某种原因而不能正常的达到目的,这样的现象称为异常。

本文主要介绍异常的处理方式,异常的分类,自定义异常。

正文

异常的处理方式

1.抛异常:

在发生的方法行为中,将异常传递出去,交由其他地方处理。

1)语法

修饰符 放回值类型 方法名(参数列表) throws 异常类名,异常类名{

//类体

}

}catch(异常类名 变量名){

//异常的处理,替代方案

}

2.捕捉异常

异常在方法中发生后,立即对其采取处理。

1)语法

try{

//语句块

}catch(异常类名 变量名){

//异常的处理,替代方案

}catch(异常类名 变量名){

//异常的处理,替代方案

}finally{

//代码块

}

注:

1)捕捉异常的优先顺序

catch块中是需要捕捉的异常,捕捉按照小类型到大类型的顺序捕捉,不能倒置;

如果捕捉的异常存在继承关系,应该先捕捉小类型,再捕捉大类型的异常。若不存在继承关系,那么无捕捉的优先顺序。

2)try,catch,finally的个数

try只能有一个;catch可以有,也可以没有;finally也可以有没有;

但catch和finally至少出现一个。

3)catch块的执行顺序

如果在捕捉异常的过程中,若有多个catch块,按照从上到下的顺序执行catch块;

若有一个catch块被执行,其他catch就不会被执行;finally总是会被执行。

小结

抛异常和捕获异常的区别:

1)捕获异常:当前行为发生异常之后,能够寻求替代方案,继续完成当前的行为。

2)抛异常:当行为发生异常之后,在当前行为中,无法寻找替代方案,需要将异常抛出。

产生异常

1)语法

throw new 异常类名();

注:

1))有很多的异常在API中已产生

1))根据异常采取的处理方式\

a) try{

//代码块

}catch(异常类型 变量名){

}catch(异常类型 变量名){

}finally{

}

b)抛异常:在方法定义中声明throws异常类名。

补充:发生异常,代码以后的执行顺序。

1)如果使用try{}catch 方式处理异常,当前代码位于try块中;如果当前代码发生了异常后,在try块且位于当前代码之后的代码不会被执行,直接进入catch块中;执行完catch块,继续执行后面的代码。

2)若使用throws处理异常时,当前代码在执行过程中发生异常之后,位于当前代码以后的 所有语句都将不会被执行。

例子


<script src="code.csdn.net/snippets/27…" type="text/javascript"></script>

**
**

\

异常分类

\

自定义的异常

目的:

能够给用户提供更准确的提示信息,改善用户体验。

1)如何自定义异常

1))需要继承异常父类(Exception或RuntimeException)

2))提供对应的构造器

3))在对应的构造器调用父类对应的构造器

2))自定义异常示例:

<script src="code.csdn.net/snippets/27…" type="text/javascript"></script>

\

总结

1.异常的选择:

跟内存有关的异常,通常使用运行时异常;

跟内存以外有关的异常,通常使用编译时异常。

2编译时异常与运行时异常的语法检查区别

1).编译时异常

.编译时异常,如果没有产生异常,就不能去捕捉。在IDE中,如果产生捕捉时将提示如此信息:

Unreachable catch block for ActivationException. This exception is never thrown from the try statement body。

示例图片:

\

2).运行时异常\

1))运行时异常,可以在没产生异常时,在代码中可以进行捕获。

2))因为运行时异常不参与语法检查;

3))运行时异常无论在代码中产生异常或者处理异常都可通过语法检查。

3。编译时异常的javac过程的语法检查步骤:

1)检查代码中是否有异常产生

2 )检查异常是否被处理。

注:

以上两步缺一不可,如果缺失就会提示语法错误。

\

\

相关资源:2018年数学建模国赛A题优秀论文.pdf