Java面试知识点(十五)java中的异常(exception、throw、throws、try···catch)

一、throws 关键字

定义一个方法的时候可以使用 throws 关键字声明。使用 throws 关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理。使用 throws 抛出的运行时异常相当于提示调用者,该方法有风险,至于是否处理该风险,由调用者决定。

throws 关键字格式:

public 返回值类型 方法名称(参数列表,,,)throws 异常类 {};

二、throw 关键字

throw 关机字作用是抛出一个异常,抛出的时候是抛出的是一个异常类的实例化对象,

在异常处理中,try 语句要捕获的是一个异常对象,那么此异常对象也可以自己抛出。

 	try{
   
            throw new Exception("自己抛着玩的。") ;    // 抛出异常的实例化对象
        }catch(Exception e){
   
            System.out.println(e) ;
        }

在主方法中的所有异常都可以不使用try…catch进行处理

三、在 JAVA 异常处理机制中,

1)如果抛出的是 EXception 的类型,则必须进行 try …catch 进行处理。

2)如果抛出的是 RuntimeException 的类型,则可以不使用 try。。catch 处理,一旦发生异常之后,将由 JVM 处理。

为了保证程序的健康性,在有可能出现异常的时候还是老实使用 try …catch 处理。

四、异常分类

Java面试知识点(十五)java中的异常(exception、throw、throws、try···catch)_第1张图片Java 标准库内建了一些通用的异常,这些类以 Throwable 为顶层父类。

Throwable 又派生出 Error 类和 Exception 类。

错误:Error 类以及他的子类的实例,代表了 JVM 本身的错误。错误不能被程序员通过代码处理,Error 很少出现。因此,程序员应该关注 Exception 为父类的分支下的各种异常类。

异常:Exception 以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被 Java 异常处理机制使用,是异常处理的核心。

编译时异常必须显示处理,运行时异常交给虚拟机。
运行时异常可以不处理。当出现这样的异常时,总是由虚拟机接管。比如我们从来没有人去处理过 Null Pointer Exception 异常,它就是运行时异常,并且这种异常还是最常见的异常之一。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由 Thread.run () 抛出,如果是单线程就被 main () 抛出(此时main方法需要在方法签名中throws异常的种类)。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,整个程序也就退出了。运行时异常是 Exception 的子类,也有一般异常的特点,是可以被 Catch 块处理的。只不过往往不对它处理罢了。也就是说,如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

五、异常处理的基本语法

在编写代码处理异常时,对于检查异常,有 2 种不同的处理方式:使用 try…catch…finally 语句块处理它。或者,在函数签名中使用 throws 声明交给函数调用者 caller 去解决。

实例:

A方法存在异常风险
main方法调用A方法

情况1:
A使用try-catch处理了异常,则main方法不需要做额外处理
情况2:
A在方法签名signature中throws了异常,此时main需要做出处理,有两种方式,第一就是使用try catch 捕获异常,另一种是在main方法签名中throws异常ÿ

你可能感兴趣的:(java,面试,Java面试知识汇总)