2016-09-22 3 views
1

마지막으로 오픈 소스 프로젝트를 작성할 계획이지만 깊이 혼란 스럽습니다. 필자는 코드에서 예외 처리 메커니즘을 사용하는 것이 좋지만 알고있는 오픈 소스 프로젝트 (대부분 인기있는 프로젝트)는 try ... catch 및 exceptions를 사용하지 않는다. 왜? 오픈 소스 코드로 사용하면 어떤 나쁜 일이 일어날까요?오픈 소스 코드에서의 예외 처리 (try-catch)

+0

이러한 오픈 소스 프로젝트를 try/catch 대신 사용할 수있는 대안은 무엇입니까? – jaco0646

+0

@ jaco0646 그들은 단순히 오류를 플래그하기 위해 값을 반환합니다. – Fresher

+0

@Fresher 당신이 말하는 언어는 무엇입니까 ?? 예외 처리 전략은 언어 지향적입니다. 예 : Java 커뮤니티는 .net 사람들이 그것을 안티 패턴으로 믿는 확인 된 예외를 거의 믿는다. 대부분의 스크립팅 언어를 참조한다면 상황은 많이 다릅니다. –

답변

1

그러나 내가 보았던 (심지어 인기있는 것) 대부분의 오픈 소스 프로젝트는 try ... catch 및 exceptions를 사용하지 않습니다.

프레임 워크를 개발하는 데 사용하는 기본 언어는 프레임 워크가 잘못된 조건을 처리 할 수있는 방법에 대한 전략에 큰 영향을줍니다. 다른 프로그래밍 언어는 예외 처리 메커니즘이 다릅니다. 예를 들어, Java는 이라는 개념을 가지고 있습니다. 개발자가 호출자를 처리하거나 호출자에게 전파해야하는 예외적 인 경우는입니다. 반면에 C#은 의 개념을 가지고 있지 않습니다. 예외가 있습니다. 여러분이 언급하고있는 프레임 워크가 이라는 개념을 가지고 있지 않은 언어를 사용한다는 것은 예외를 확인했을 가능성이 있습니다.

예를 들어 보겠습니다. 구분 된 파일을 읽고 메모리 (객체)에로드하기위한 프레임 워크를 만들고 싶다고합시다. 프로그래머가 제공 한 파일 이름과 경로를 기반으로 파일을 읽는 책임이있는 계층을 작성합니다. 이러한 프레임 워크에서 매우 일반적인 한 가지 예외적 인 조건은 파일 또는 경로의 이름이 유효하지 않다는 것입니다. Java로 프레임 워크를 구축 한 경우 Java에서 제공하는 파일 읽기 API 중 하나를 사용하여 파일을 읽었을 가능성이 있습니다. 대부분의 파일 읽기 API는 Java throw에서 확인합니다 (예 : FileNotFoundException). 개발자가 처리하거나 전파해야합니다. 선택한 언어 자체가 예외로 작업하도록 강요하는 경우, 언어로 제공되는 예외 프레임 워크를 사용하기 위해 선택의 여지가없는 곳을 찾아야합니다.

왜? 오픈 소스 코드로 사용하면 어떤 나쁜 일이 일어날까요?

예외 처리의 실제 문제는이 기능의 올바른 사용법 (특히 확인 된 예외 개념이있는 언어)에 있습니다. 경험이 부족하거나 게으른 프로그래머는 응용 프로그램의 시작 지점까지 의 패스를으로 끝내면이 기능을 악용 할 수 있습니다. 단지 런타임 환경에서 예외를 처리하게합니다. 다음 코드는 하나 개의 남용을 보여줍니다

public static String loadData(String fileName)throws FileNotFoundException { 
    String resource = ResourceManager.getResource(fileName); 
    //code to read the file 
} 

public static boolean containsText(String fileName,String text)throws FileNotFoundException { 
    String contents = loadData(fileName); 
    if(contents.contains(text)) { 
     return truel 
    } 
    return false; 
} 

public static void main(String []args)throws FileNotFoundException { 
    containsText("/home/abc.txt","Account Number"); 
} 

너무 많은 체크 된 예외가 던져되고있는 API를 구축하는 것이 기능을 악용하는 또 다른 방법. 따라서 API 사용자는 실제 비즈니스/응용 프로그램 논리보다 많은 예외 처리 코드를 작성해야합니다.