zoukankan      html  css  js  c++  java
  • Practical Java笔记四:绝对不可轻忽异常

    当Java程序产生异常,你能做些什么呢?
    1.捕捉并处理它,防止它进一步传播(propagate)。
    2.捕捉并再次抛出它,这么一来它会被传播给调用端。
    3.捕捉它,然后抛出一个新异常给调用端。
    4.不捕捉这个异常,听任它传播给调用端。

    如果你在开发初期不知道如何应付异常,至少要像下面这样做:

    public void m1(){
         //...
         try{
         
         }catch(FileNotFoundException fnfe){
             System.out.println(fnfe+"caught in method m1");
             LogException(fnfe);
         }
      
      }

      

         这种做法至少提供了一些输出,以及一份日志文件(logfile),用来记
    录程序曾经发生过异常,也让你知道程序存在一些问题。这种技术也可以
    用来提醒你,异常已经出现而且暂时没有适当的回复机制。日后你可以依
    据日志文件内的记录找到相应代码,插入合适的异常处理句。注意,你必
    须提供LogException(),它只需将异常信息写入文件就行了。

        这种做法的缺点是:日志文件仅仅包括测试时发生的异常,无法记录未发
    生的异常。所以当某次测试过后,即使对日志文件的所有内容都处理完毕,
    也并不就意味你已经完全清理好了你的程序。日志文件仅仅只用来显示你
    在测试过程中获得的异常而已。
        如果想要发现测试过程中未曾发生的异常,则必须查找整个程序源码,
    LodException()或其他作为注释的标记(tag)。这是确保你不需要使用简
    陋的println()语句的惟一办法;那个语句所在之处应该代之一适当的异
    常处理代码。


    另一个有效做法是使用printStaticTrace( )。这个函数提供被抛异常的
    消息,以及该异常的起源(以stack trace方式呈现),并将它们输出到
    标准错误串流(standarderrorstream。译注:通常是屏幕)。以此做法
    修改代码,获得的结果是:

     public void m1(){
            //...
            try{
              
            }catch(FileNotFoundException fnfe){
               System.out.println(fnfe+"caught in method m1");
               fnfe.printStackTrace(System.err);
            }
         }
  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/andgoo/p/2469061.html
Copyright © 2011-2022 走看看