当前位置:  技术问答>java相关

请问try ... catch 和 throw有什么区别,谢谢

    来源: 互联网  发布时间:2017-03-11

    本文导语:  请问try ... catch   和 throw有什么区别,谢谢 | 可能是那位小兄弟的finally块中的两条语句会抛出异常 小兄弟,请把它放在       stmt.close();       conn.close();       catch(SQLException ex){}...

请问try ... catch   和 throw有什么区别,谢谢

|
可能是那位小兄弟的finally块中的两条语句会抛出异常
小兄弟,请把它放在
      stmt.close();
      conn.close();
      catch(SQLException ex){}中试试


对于异常有两种处理方法
1、要么声明异常,也就是在方法名后面加上throws exceptionname,...,
   方法本身只是抛出异常,由函数调用者来捕获异常。
   若产生异常,异常会沿着调用栈下移,一直找到与之匹配的处理方法,若到达调用栈底仍未找到,程序终止。
2、要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。
    
你可以选择声明异常而不去捕获它,那样交给调用者来处理异常;
也可以选择捕获异常,捕获try块中可能产生的异常。

那位小兄弟,在方法后加了throws。。。就可以了。
实际上你是声明异常,当其他方法调用你所定义的executeInsert()方法时,必须有其中一个方法(调用栈中)来捕获它。

你的代码中肯定还有可能产生异常的语句没有全部放到try{}块中,既然你打算在executeInsert()方法中处理异常,那么就不要再往更大的context传递了。





        


|
try .... catch 就是用catch 捕获 try 中的异常,并处理;
throw 就是不处理异常,直接抛出异常,由调用此方法的地方处理抛出的异常。

|
catch是捕获异常。也就是说某一个操作有可能会抛出什么异常。
而throw 就是抛出一个异常。

|
调用一个会throws exception的方法(在方法定义的时候可以用throws实现)时,需要把这个方法放在try里,然后用catch破获这个exception,做相应的处理。
throw new exception()是抛出一个exception,由别的method来破获它。

也就是说try....catch是为破获别人的exception用的,而throw是自己抛出exception让别人去破获的。

|
up!!!


public void input() throws Exception
{  }
public void outputException()
{
  try { input();}
  catch(Exception e)
  { System.out.println("Exception"); }
}
如果input()出现异常,在input()中不处理,在outputException()中处理

|
如果你在方法名后面throws了异常,那么你在方法体中可以不用try,catch语句把可能抛出异常的语句{}起来,

try,catch可以让你进行异常处理,比如你在抛出异常之后由自己去打印自己的信息,并可以进行其他的出来,但是如果你不用try,catch语句的话,则由系统来处理啦。

|
先看如下的代码:
1.
 public void getconnect() throws Exception //抛出的异常 
 {
   throws new exception();
 }
2.
 如果在调用这个方法的时候就必须用
  try{ 
       getconnect()
     }catch(Exception e)
     {
      //出现异常DO ANYTHING
     }
在第一中情况中的throws new exception可以跟任何的信息,这样就可以把在CATCH是获得的信息转化为自己定义的信息,但是缺点就是在你捕获的时候可
能会落掉一些更详细的错误、异常的信息

|
简单的说,如果一个方法中用了throw,那么这个方法会向上抛出一个异常,那么在调用这个方法的时候必须把这个调用放在try...catch块里处理这个异常。

|
很简单的东西,你可以定义你自己的异常,然后用throws抛出多个异常,当然也可以抛出系统定义的异常;而try-catch块则在调用一个抛出了异常的方法是使用,就是如果一个方法抛出了至少一个的异常,你在调用该方法时,就必须用try-catch块捕获所有抛出的异常;而throw则是指定抛出一个特定的异常。

    
 
 

您可能感兴趣的文章:

  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问webloigc 的API的帮助文档,在什么位置我,没找到谢谢了。 iis7站长之家
  • 请问那里有java中图像特效的代码下载?谢谢
  • 请问谁有Jbuilder5 Enterpeise的注册码,谢谢了!
  • 请问java用什么工具编写?在哪里运行?我刚开始学,不太懂,谢谢了
  • 请问运行编译EJB,需要在什么环境下,如何配置,请给出详细的说明,谢谢!在线......
  • 我是新手,请问在哪里更改系统时间?谢谢
  • 请问哪儿有完整的JDK1.4或者1.3的DOCUMENT下载。谢谢
  • 请问如何在一个JSP页面调用一个exe程序呢?谢谢!
  • 请问如何用jni类来调用一个非java写的外部exe?谢谢!
  • 请问webloigc 的API的帮助文档,在什么位置我,没找到谢谢了。
  • 请问在rh7.3中,如何更改计算机名?谢谢
  • 请问Linux显示当前版本的命令是什么?谢谢
  • 请问如何看当前目录的剩余空间,谢谢!
  • 请问JAVA中怎样去掉字符串后面的空格,谢谢!!!
  • 请问哪里有JDK的最新版本下的!!(只要对就给全分)谢谢
  • 请问学习java比较好的中文书籍有哪些,谢谢!
  • 请问哪有JSDK下载?谢谢!
  • 请问那里有hp openview下载,for windows,急 谢谢
  • 请问如何在页面显示 .swf图片文件,谢谢!
  • 请问使用javabean执行sql之后如何抓住catch ?
  • 请问 throw 和 catch有什么区别?谢谢!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待
  • 请问如何在一台单机上装VMware的网络访问问题?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3