java中throw和throws new exception的区别

以前写代码,很少用到异常,后来发现这种习惯是错的。异常也是一种信息,并不是错误。

初始环境就是这么简答。

2:下面给方法methodTry加上方法主体:

刚开始学代码的时候都会写这个方法,会抛出一个异常:

控制台很清楚的告诉我们,被除数不能为0.但是如果我们想自己获取这个异常,然后做些操作呢?比如说 如果这个方法体有问题,我就做一个输出。

这个时候就用到了try-catch,手动的捕获这个异常,然后进行我们需要的操作。毕竟异常分很多种,并不是所有的异常都是我们不需要的。比如说对用户登录来说,登录成功 登录失败两种结果,登录失败又分为重复登录,账号密码不匹配等。我们可以把这些失败全都写成Exception。当成功的时候就直接返回,失败的时候抛出异常,这个可比我们写好多返回值简单多了。

我们手动的捕获了这个异常。上面的代码告诉我们,当try-catch块中有异常时,异常后面的代码是不会执行的。try-catch还有什么好处?回滚。

其实当我简单的抛出个异常的时候,throw new Exception()这里会报错,现在看一个报错信息:

我们写好的throw是什么意思呢? 其实跟a/0是一个意思,都是抛出一个异常,只不过一个是jdk已经定义好的异常,被除数不能为0.一个是我们手动抛出的异常。

重点在于手动抛出异常后,我们要在catch中进行处理,在catch中写我们的部门逻辑代码。

  throw是手动抛出异常,跟 被除数不能为0 数组下标越界等异常一样,都是异常。

  try-catch是在catch中手动捕获异常,然后进行一些操作。比如说输出异常信息,打印错误日志等。

  throws是往上级抛出异常,我的方法methodThrow有异常,但是在这个方法中我不进行处理了,让上级进行处理吧。然后就跑到main函数那去了。对main函数来说,可以throws让系统进行处理,也可以自己处理这个异常啊。main.methodThrow()和a/0 、throw new Execption()没什么区别,都是有异常。

方法中的异常,到main函数中再进行处理。

所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。

用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。

throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
throw则是明确了这个地方要抛出这个异常。

throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。

throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。

1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

throws是用来声明一个方法可能抛出的所有异常信息,而throw则是指抛出的一个具体的异常类型。此外throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。

  throws:用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常(其实就是,不想自己处理,那就交给别人吧,告诉别人我会出现什么异常,报自己的错,让别人处理去吧)。

格式是:方法名(参数)throws 异常类1,异常类2,.....

throw:就是自己进行异常处理,处理的时候有两种方式,要么自己捕获异常(也就是try catch进行捕捉),要么声明抛出一个异常(就是throws 异常~~)。注意:throw一旦进入被执行,程序立即会转入异常处理阶段,后面的语句就不再执行,而且所在的方法不再返回有意义的值!

//调用带throws声明的方法,必须显式捕获该异常 //否则,必须在main方法中再次声明抛出 //调用抛出Runtime异常的方法既可以显式捕获该异常, //该代码必须处于try块里,或处于带throws声明的方法中 //也可完全不理会该异常,把该异常交给该方法调用者处理

我要回帖

更多关于 throws new exception 的文章

 

随机推荐