SSISO Community

시소당

메소드

5.  메소드

5.1.  인자의  유효성을  검사하라
유효성  검사를  통해  인자가  유효하지  않을  때  적절한  예외를  발생시키면,  빠르고  깔끔하게  메소드를  종료할  수  있다.

5.2.  메소드  시그니처를  신중하게  설계하라
1.  메소드  이름을  신중하게  결정하라.  이름은  항상  표준  명명  규칙을  따라야  한다.
2.  편리한  메소드를  제공하기  위해  너무  애쓰지  마라.
3.  인자를  너무  많이  받지  마라.  현실적으로  인자  개수가  세  개를  넘으면  문제가  있다.

5.3.  null이  아닌  길이가  0인  배열을  리턴하라

  

5.4.  외부에  제공하는  API의  모든  구성요소에  대해  문서화  주석을  달아라
API를  문서화하려면,  외부에  제공하는  모든  클래스,  인터페이스,  생성자,  메소드,  필드에  문서화  주석을  달아야  한다.

6.  예외처리

6.1.  예외는  예외상황에서만  써야  한다
예외  기반의  구현패턴은  코드의  목적을  애매하게  만들고  성능도  떨어뜨린다.


6.2.  처리해야  하는  예외와  런타임  예외를  구분해서  던져라
1.  처리해야  하는  예외
    호출자가  예외상황을  복구할  수  있다고  기대할  수  있을  때  던진다.
  
2.  처리하지  않는  예외
    런타임  예외와  에러가  있다.  이  둘의  행동  방식은  똑같다.  이것들을  잡을  필요도  없고
    특별한  경우가  아니라면  잡아서도  안  된다.  이는  복구할  수  없는  상황이기  때문에  더
    이상  프로그램을  실행하는  것은  위험할  수도  있다.

6.3.  표준  예외를  써라

예외


용도

IllegalArgumentException


인자  값이  적절하지  못할  때

IllegalStateException


호출을  받은  객체상태가  적절하지  못할  때

NullPointerException


null을  금지한  인자  값이  null일  때

IndexOutOfBoundsException


인덱스  값이  범위를  벗어났을  때

ConcurrentModificationException


동시  수정을  금지한  객체를  동시에  수정할  때

UnsupportedOperationException


객체가  메소드를  지원하지  않을  때


6.4.  예외처리  전략
1.  비즈니스  로직을  수행하는  중  발생하는  비즈니스적인  Exception을  제외하고는  모든  Exception을  Unchecked  Exception으로  처리한다.

2.  Checked  Exception  중  고객이  인지해야  하는  Exception은  메시징  처리를  통해  display  해주며,  시스템  관리자에게  메일로도  통보해  줄  수  있도록  해준다.  (에러  메시지를  처리하는  페이지를  따로  두어  처리한다.)

3.  Unchecked  Exception이  발생하는  경우  Exception  내용을  시스템  관리자에게  메일로  통보해준다.

4.  database  다운과  같이  프로그램적으로  해결하기  힘든  에러가  발생할  경우에는    Unchecked  Exception을  사용한다.

5.  Unchecked  Exception  이나  Checked  Exception  중  처리되지  않는  Exception은  servlet  container에서  제공하는  에러  처리  기능을  활용하여  처리토록  한다.  예를  들어,  404,  500에러  발생시  특정페이지로  이동토록  설정한다.

  

public  String  socketGet(String  host,  int  port,  String  uri,  String  argv)  {
        StringBuffer  result  =  new  StringBuffer();

        try  {
                URL  url  =  new  URL("http",  host,    port,  uri  +  argv);
                URLConnection  conn    =  url.openConnection();
                InputStream  is  =  conn.getInputStream();
                BufferedReader  reader  =  new  BufferedReader(new  InputStreamReader(is));

                try  {
                        String  line  =  "";
                      
                        while  (line  !=  null)  {
                                line  =  reader.readLine();
                                if  (line  !=  null)  result.append(line);
                        }
                }  finally  {
                        reader.close();
                }

                return  result.toString();
        }  catch  (Exception  e)  {
                System.err.println(e.getMessage());
                return  null;
        }
}

543 view

4.0 stars