当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

<b>冲破Java非常处理法例</b>[Java编程]

赞助商链接



  本文“<b>冲破Java非常处理法例</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Q: 我在我的利用程序中调用了外部办法并且想捕捉它大概抛出的非常.我能捕捉java.lang.Exception吗?

A: 通过一个给定的办法去处理全部运行时和检测非常关于预防外部错误是不充分的.

你可以去读目前 JavaWorld文章 – “Java Tip 134: When Catching Exception, Don’t Cast Your Net Too Wide”.这篇文章告诫了捕捉java.lang.Exception和java.lang.Throable是不好的.捕捉你能指定的非常关于代码的可保护性是非常重要的.但是这个法则依靠于特别的环境.假如你不打算你的程序崩溃并且保存你的数据构造的安全非常,那么你必须捕捉被抛出的真正的非常.

举个例子,想象你有一个加载了这个接口的服务器利用:

public interface IFoo
{
  /**
  * This method can't throw any checked exceptions...or can it?
  */
  void bar ();
} // End of interface

关于给出参数的来由是让我们告诉你这样的服务在什么地方,并且差别的IFoo实现可以从外部资源加载上.你写以下代码:

try
{
  IFoo foo = ... // get an IFoo implementation
  foo.bar ();
}
catch (RuntimeException ioe)
{
  // Handle 'ioe' ...
}
catch (Error e)
{
  // Handle or re-throw 'e' ...
}

并且你在这个里处理了全部大概的非常.你不需求在这里加上任何捕捉java.io.IOException的非常,因为IFoo实现没有从IFoo.bar()中抛出它,对吗?(事实上,假如你加上了捕捉java.io.IOException非常块,编译器大概会把它作为不可到达的非常而丢弃)

错误.在我写的EvilFoo类中bar()办法证明了将抛出你传送给类构造器的任何非常:

public void bar ()
{
  EvilThrow.throwThrowable (m_throwthis);
}

运行Main办法:

public class Main
{
  public static void main (final String[] args)
  {
   // This try/catch block appears to intercept all exceptions that
   // IFoo.bar() can throw; however, this is not true
   try
   {
    IFoo foo = new EvilFoo (new java.io.IOException ("SURPRISE!"));
    foo.bar ();
   }
   catch (RuntimeException ioe)
   {
    // Ignore ioe
   }
   catch (Error e)
   {
    // Ignore e
   }
  }
} // End of class

你将看到从bar()办法抛出的java.io.IOException非常实例并且没有任何捕捉块:

>java -cp classes Main
Exception in thread "main" java.io.IOException: SURPRISE!
at Main.main(Main.java:23)


  以上是“<b>冲破Java非常处理法例</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .