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 标准库内建了一些通用的异常,这些类以 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异常ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值