【第22期】观点:IT 行业加班,到底有没有价值?

关于java中Exception的一些理解

原创 2017年01月03日 23:10:48

Exception中关键字

throws:

在方法的声明时使用,作用是声明该方法 可能 有该种异常,不一定会有,是一种倾向,一种预防措施,保证代码的健壮性。让你的调用者知道,我这个方法可能会抛出何种异常,让我的调用者知道并且要做出一定的处理。因此就要求其调用者做出一定“防范措施”来进行捕获可能会抛出的异常并解决或者进行继续抛出(不推荐)。例如进行try catch解决。
public void method1() throws XXXException,YYYException {//方法体}
//声名多个异常时异常之间用逗号隔开
public void method2(){
//调用method1,因为method1声明了他可能用两种异常,所以在这就要做出防范措施,也就是捕获处理
try{method1();}
catch(XXXException e1){
//处理方式
}
catch(YYYException e2){
//处理方式
}
}

当然你也可以不用在这进行catch处理,而是进行继续抛出,

public void method2()throws XXXException,YYYException {method1();}
这样之后异常的处理就交给了method2()的调用者。。类似的进行向上层层抛出。当然无论怎么抛出,最后都要有一个调用者解决,最终的调用者是jvm,也就是说如果一直没解决,那么就只能有jvm来解决,jvm的解决方法很简单,就是吧你的异常信息打印出来..也就是我们常见的红字

throw

在该方法内部使用,此时就是真的抛出了一个异常,作用就是抛出异常对象给调用者,自己不处理。如果调用者也不处理,那么就会层层抛出,直到有调用者处理或者最终抛给虚拟机,虚拟机的处理方式就是打印你的异常信息,也就是我们经常看到的红字。。但是一般运行时异常都不会选择抛出,而是在方法中直接catch处理了。。
public int method1(int[] a ,int i) {
if(i>a.length())
throw new ArrayIndexOutOfBoundsException("自定义信息");
else
return a[i];
}

如果i>a.length()了,那么就会抛出一个下标越界的异常对象,方法本身不作处理。仅仅把异常抛出。当然这种方式我们并不推荐,这是一种消极的处理方式。

RuntimeException(运行时异常)

出现这种异常编译可以通过,但是运行时会报错,例如上面的数组下表越界异常,对于这种运行时异常,我们一般不采用throws进行声明,而是进行自定义抛出(用throw关键字)方式或者虚拟机默认的抛出方式抛出(不做任何处理),然后在和控制台答应异常信息来让程序员进行修改。当然也可以进行catch捕获然后进行处理,并进行日志保存。。具体要用那种方式要根据程序的要求来灵活选择,是要在程序中依靠程序自己处理还是要由控制台打印错误信息,由程序的具体功能来决定。

非运行时异常

除了runtimeException及其子类以外其他所有Exception的子类都是非运行时异常
这种异常又被称为编译时异常,必须声明或者捕获,不然编译不通过。也就是说这些异常是必须要在方法声明中throws Exception,而且所有此方法的调用者如果不写try catch的话就要一直throws Exception,一直到main方法为止。如果不throws,就一定要try catch,如果一个应该抛出非RuntimeExcetion的方法既没有throws Exception也没有try catch,一定会报错的,编译无法通过。
另外异常处理的原则是尽可能早的catch异常,正常的程序不应该写throws Exception。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

java中5种常见的异常(Exception)

1. Java.lang.NullPointerException   这个异常大家肯定都经常碰到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经...

Java中RuntimeException和Exception的区别

在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。 所有方法都可以在不声明throws的情况下抛出RuntimeException及...

Java必知必会:异常机制详解

一、Java异常概述 在Java中,所有的事件都能由类描述,Java中的异常就是由java.lang包下的异常类描述的。1、Throwable(可抛出):异常类的最终父类,它有两个子类,Error与...

Java中异常机制的意义

什么是异常:异常就是程序在运行时出现的不正常情况。对于严重的情况Java通过Error类进行描述,一般不用编写代码处理;对于不严重的情况Java通过Exception描述,一般编写针对性代码对其进行处...

Java 异常详解

Java 异常详解 Android · jucongyuan · 于 8 天前发布 · 最后由 jucongyuan 于 5 天前回复 · 489 次阅读 异常和错...

Java中Exception的种类

通常来讲,Java中的异常会被分为三种: Error: 这种异常被设计成不被捕获,因为这种异常产生于JVM自身。Runtime Exception: 运行时异常往往与环境有关,编译时无法检查...

java中的异常(Exception)介绍

java中的异常(Exception)介绍(1) 异常(Exception)是指正常程序不能处理或者没有处理的异常情况或者异常事件。

关于java异常为什么要声明的原理

class Son1Exception extends Exception{ Son1Exception(String a){ super(a); } } class Son2Exception ex...

Java中的Exception

http://blog.csdn.net/hguisu/article/details/6155636Throwable: 有两个重要的子类:Exception(异常)和Error(错误),两者都是J...

Java中的Exception异常 自定义异常

Java基础笔记 – Java中的Exception异常 自定义异常 public class Exception extends Throwable Exceptio...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)