什么是异常?
程序在执行中发生了不正常的情况,这种情况就叫做异常。
为了应对程序中的异常,java提供了异常机制,它的作用:
java语言是很完善的语言,提供了异常的处理方式。当程序执行出现异常的时候,java会把异常信息打印输出到控制台,以供参考。程序员看到异常信息后,会对程序进行修改,让程序更加健壮,这体现了java的健壮性。
异常分为编译时异常和运行时异常,他们都发生在运行阶段,是不会发生在编译阶段的。
那为什么有编译时异常呢?
编译时异常是必须在编译阶段预先处理的,如果不处理编译器报错。并且异常的发生就是new了异常对象,而创建对象是发生在运行阶段的,所以异常都是发生在运行阶段的。
编译时异常概率较高,可以进行预先处理;运行时异常概率较低,不能进行预先处理
编译时异常(受检异常和受控异常)和运行时异常(未受检异常、未受控异常)
两者之间的区别:
运行时异常:所有的RuntimeException及子类都属于运行时异常。运行时异常在编写程序阶段,可以选择处理或不处理。运行时异常发生概率较低。
编译时异常:所有的Exception的直接子类,都叫做编译时异常。编译时异常必须在编写程序的时候预先对异常进行处理,如果不处理编译器报错。编译时异常发生概率较高。这个必须要处理,即在我们的编译器中代码不变红
方法一:利用try catch捕捉异常,在当前文件就可以解决。
语法如下:
- try{
- //可能会出错的代码块
- }catch(Exception e){
- //出现异常后,执行的语句
- e.;
- }finally{
- //通常用来释放资源
- }
try catch之后的语句正常执行。try内部的捕捉代码出现错误,内部的代码不会执行。
方法二:一级一级往上抛,直到解决为止。可以抛出具体异常,也可以抛出父类异常。最终抛给JVM。(抛给上级,让上级处理,自己并不进行处理)
抛出异常的语句之后的语句不会执行。
可以处理,也可以不处理
处理方式:可以使用try catch来对可能存在异常的代码进行捕捉。
异常对象的生成:
由虚拟机自动生成:程序运行过程中,虚拟机检测到程序发生了问题,如果在当前代码中没有找到相应的处理程序,就会在后台自动创建一个对应异常类的实例对象并抛出——自动抛出。
由开发人员手动创建:Exception exception = new Exception();——创建好的异常对象不抛出对程序没有任何影响,和创建一个普通对象一样。
只有进行打印或者throw抛出才可以中断程序。
我们可以利用Exception类创建异常对象。
``
- public static void main(String[] args) {
- Exception exception = new Exception("此处有异常");
- String message = exception.getMessage();
- System.out.println(message);
- exception.printStackTrace();
-
- }
异常对象的方法:
getMessage:获取异常信息。
printStackTrace():打印异常跟踪信息和异常位置。(常用)

作用:能够使自己创建的类更加符合实际开发形式,能够抛出异常跟踪信息。
语法如下:
- try{
- //可能会出错的代码块
- }catch(Exception e){
- //出现异常后,执行的语句
- e.;
- }finally{
- //通常用来释放资源
- }
分析: