在做项目的时候,常常会遇到不同的异常需要捕捉,或是catch,或是throw,但是单靠java中的异常是无法满足业务需求的,像一段代码中会有FileNotFoundException和IOException,如果throw,则父方法只能捕获到IOException,而业务中可能还需要处理FileNotFoundException,这时自定义异常是一种办法吧。想请教各位,你们在项目中是如何处理异常的,对异常的处理是如何分级的,应该细分到如何程度。
问题可能稚了些,但请高手们谈谈经验,而不只是“根据项目需要”,谢谢了^_^

解决方案 »

  1.   

    要自己定义异常类,建议看看think in java
      

  2.   

    如果throw,则父方法只能捕获到IOException
    为什么?
      

  3.   

    java.lang.Object
      java.lang.Throwable
          java.lang.Exception
              java.io.IOException
                  java.io.FileNotFoundExceptiontry{
    ...
    } catch(FileNotFoundException fe){
    ...
    } catch(IOException ie){
    ...
    } catch(Exception e){
    ...
    }
      

  4.   

    class MyException extends Exception{
      ..........
    }public static void main(){
          try{
             ........
          }catch(MyException e){
             .......
          }
    }
    ===================================================
    ps:
    附赠一个搞笑版答案:
    throw new RuntimeException("偶的自定义异常");
      

  5.   

    谢谢楼上的搞笑版了,不过main函数没写全哦^_^
      

  6.   

    给你看个我写的异常类:
    一般是要使自己项目的所有异常继承本项目定义的异常类public class MyException extends Exception {    /** errorCode */
        private String errorCode = null;    /** rootCause */
        private Throwable rootCause = null;    /** Log Class */
        private Log log = new Log();    /**
         * Constructor
         */
        public MyException() {
            super();
        }    /**
         * Constructor
         * 
         * @param errorCode
         * @throws SIRMException
         */
        public MyException(String errorCode) throws MyException {
            super(errorCode);
            System.out.println(errorCode);
            log.log(errorCode);
        }    /**
         * Constructor
         * 
         * @param errorCode
         * @param rootCause
         * @throws SIRMException
         */
        public MyException(String errorCode, Throwable rootCause) throws MyException {
            super(errorCode, rootCause);
            System.out.println(errorCode + rootCause.getMessage());
            log.log(errorCode + rootCause.getMessage());
        }    /**
         * get errorCode 
         * 
         * @return errorCode 
         */
        public String getErrorCode() {
            return errorCode;
        }    /**
         * get rootCause
         * 
         * @return rootCause 
         */
        public Throwable getRootCause() {
            return rootCause;
        }}
      

  7.   

    感谢18楼suxq126 的异常类,学习ing.