2010-05-22 3 views
7

이것은 어색할 수 있습니다 ...
그러나 나는 그것을 이해하지 못했습니다.Java 용어 : 컴파일 타임 오류가 아니고 컴파일 타임 예외가 아닌 이유는 무엇입니까?

왜 우리가 compile-time error 및 자바하지 compile-time exception해야합니까?

나는 우리가 결코 말하지 않을 것을 의미한다. compile-time exception.
우리는 이것을 compile-time error이라고 말하기 쉽다.

같은 이유가 있습니까 ??
모든 제안을 환영합니다 ....

감사!

+0

@All : 컴파일 타임 오류가 아니라 컴파일 된 예외를 호출하는 이유는 무엇입니까? –

+2

예외는 항상 프로그램에 문제가있는 것은 아닙니다. '예외'라는 용어는 컴퓨터 프로그램의 맥락에서 특정한 기술적 의미를 지닙니다. 제가 게시 한 설명을보십시오. – RMorrisey

답변

10

이 이유는 프로그램 실행 중에 예외가 발생하기 때문입니다. 자바에는 Exception 클래스의 특정 유형이 있습니다.

컴파일 할 때 코드가 실행되지 않아 예외를 throw 할 수 없습니다. 실제로 컴파일러를 실행하면 코드에서 오류를 찾을 수 있습니다. 예외적 인 경우는 아닙니다.

0

예외는 소프트웨어 논리에서 처리 할 수있는 오류의 특정 이름입니다. 오류는 단순히 오타이거나 잘못 된 코드 일뿐입니다.

+0

Java har runtime * errors *도 마찬가지입니다. – aioobe

+0

런타임 오류는 처리되지 않은 예외라고합니다. – blissapp

+0

아마도 이러한 방식으로 호출 할 수 있습니다. Sun의 사람들은 그렇지 않습니다. (java.lang.Error에 대한 javadoc). – meriton

1

컴파일 타임 오류는 지시 된대로 소프트웨어를 만들 수 없기 때문에 발생합니다. 예 :

String myString = new ButtonEvent(); 

은 컴파일 타임 오류입니다. 예외는 소프트웨어 처리 중에 발견됩니다.

try{ 
    while(file.readNextLine() != file.EOF){ 
    } 
} 
catch(UnopenedException ex){ 
} 

여기서 우리는 파일을 제대로 열고 열 수 있다고 가정했습니다. 예외는 파일을 열지 않은 "예외적 인"경우입니다.

4

java의 예외는 컴파일 오류와 다릅니다. 우리는 컴파일 타임 예외라는 용어를 가지고 있지 않습니다. 예외가 발생하기를 기대하지 않기 때문에 예외가 발생합니다. 우리는 체크하고 체크하지 않은 예외 만 있습니다. 확인 된 예외 인 컴파일 시간이 인 인 경우 컴파일러에서 강제로 catch하지만 이 아니며이 아닙니다. 그것을 잡지 못하면 프로그램을 컴파일 할 수 없지만 컴파일 오류가 아닙니다.

2

예외는 처리 할 수없는 예기치 않은 흐름입니다. 컴파일 시간 오류는 유효하지 않은 코드와 비슷합니다. 따라서 코드도 컴파일되지 않습니다 .. 더 심각한 문제가 발생 했으므로 "오류"라는 용어는 수정해야합니다.

3

오류은 프로그램에 문제가 있음을 나타냅니다. 예외은 프로그램의 제어 흐름을 인터럽트하고 스택을 풀어보고 스택 상태에 대한 정보를 캡처하여보고 할 수 있도록하는 특정 구성입니다.

예외를 사용하여 오류를 나타낼 수는 있지만 항상 그런 것은 아닙니다.예 :

void startOperation() { 
try { 
    while (someComplexOperationIsOnGoing()) { 
    checkRestart(); 
    } 
} 
catch (RestartException re) { 
    startOperation(); 
} 
} 

void checkRestart() { 
if (shouldRestart()) { 
    throw new RestartException(); 
} 
} 

이 불완전한 코드 샘플은 예외가 오류가 아닌 경우를 보여줍니다. 이것은 항상 최선의 방법은 아닙니다. 프로그램에서 제어 흐름을 중단시키려는 의도가있는 경우 (예 : HTTP 요청에 응답 할 때 웹 프레임 워크에서 페이지를 리디렉션) 및 스택의 상위 레벨로 제어를 반환하는 경우에 사용됩니다 . 용어 예외은 프로그램을 인터럽트하는 메커니즘을 나타냅니다.

java에는이 동작을 캡슐화 한 예외 예외 클래스가 있습니다. 오류 클래스는 예외와 같은 방식으로 제어 흐름을 중단합니다. 런타임시 발생하는 심각하고 복구 할 수없는 문제에 대해서만 예약되어 있습니다. 예를 들어, JVM의 메모리가 부족하여 새 객체를 만들 수없는 경우에 사용됩니다.

+1

부록 : 컴파일 타임 오류는 복구 할 수 없으므로 예외가 아닌 오류라고하는 것이 좋습니다. – meriton

관련 문제