2009-11-24 5 views
1

나는 Java로 일반 Exception을 던집니다.Java의 일반적인 예외

"상황"은 기본적으로 빈 줄을 발견하면 예외가 발생하고 빈 줄은 무시됩니다.

이제는 C# 배경에서 와서 정상적으로 던질 것입니다. Exception. 자바에서는 하나 있습니까? 나는 그것을 찾을 수없는 것 같습니다.

내가 주장 할 수는 있겠지만, AssertionException을 사용하여 올바르게 문제를 해결할 수 있습니까?

감사합니다,

카일


편집 : 답변

감사합니다. 불행히도 내가 다시 확인하기 전에 발견 한 Exception을 놓칠 수있는 것은 내 자신의 어리 석음이었습니다. 나는 너무 많은 득표로 인해 질문을 삭제할 수 없다는 것을 감안하여 어설트 의견에 대한 Bills의 답변을 받아 들였습니다 (추가 할 수있는 10 초 내에 hehe).

답변

6

자바는 정상적인 Exception 클래스를 가지고 있지만 거의 버리고 싶지는 않습니다. 나는 당신의 특정 상황을 위해 더 구체적인 예외를 만들기 위해 그것을 (또는 다른 예외 타입) 확장하는 것을 선호한다.

또한 코드에서 예외가 발생하는 대신 어설 션을 사용하지 않아야합니다. 어설 션은 비활성화 될 수 있으며 기본적으로 비활성화되어 있으므로 최종 사용자가 코드를 실행할 때 해당 어설 션을 신뢰할 수 없습니다. Sun의 기사 Programming With Assertions에는 좋은 정보가 많이 있습니다.

+0

동의합니다. 이 특정 시나리오에 대한 단순 유형 예외가 필요했습니다. –

4

왜 처음부터 예외를 던질 필요가 있는지 궁금합니다. 빈 줄을 무시하는 것이 목표라면 if 문은 더 나은 솔루션이라고 생각됩니다. 정상적인 흐름 제어를 대신하여 예외를 사용하지 마십시오.

+0

사실. 그것은 학습 목적을위한 것입니다. 생산에서 쉽게 피할 수있는 문제에 대해서는 예외를 던지지 않을 것입니다. 모든 예외는 예외적 인 상황에 적용됩니다. –

+0

특히 성능 가격대로 제공됩니다 ... –

0

Bozho가 맞습니다. 하지만 더 완전한 대답은 C#에서 모든 예외는 System.Exception에서 상속되어야하지만 Java에서는 java.lang.Throwable에서 상속되는 모든 것을 던질 수 있습니다. java.lang.Exception는 java.lang.Throwable를 상속하며 Java에서 사용되는 대부분의 예외의 수퍼 클래스입니다. 대신 java.lang.Error를 던지거나 사용할 수있는 클래스를 생성 할 수도 있습니다.

그렇지 않으면, 의미는 매우 유사합니다 :

그러나
throw new Exception(); 

는 시간 예외의 대부분은 특별한 경우에 발생한다. 빈 줄을 얻고 무시할 것으로 예상되는 경우 예외를 throw하지 않고 코드에서이 경우를 처리해야합니다.

+2

-1 - 응용 프로그램 코드에서 오류 또는 오류의 하위 형식을 명시 적으로 throw하지 않아야합니다. 검사되지 않은 예외를 원한다면 더 많은 허용 방법이 있습니다. –

+0

내 이해는 일반적으로 체크되지 않은 예외를 던지는 것은 나쁜 습관으로 간주됩니다. 왜 RuntimeException을 던지기보다 오류를 던지고 있습니까? 당신은 저를 용서해야 할 것입니다 - 나는 자바에 관해서는 약간의 멍청하다. – Dathan

+0

전혀 나쁜 습관이 아닙니다. 메서드 입력 (예 : IllegalArgumentException)을 검사하는 데 사용되는 가장 일반적인 예외 중 일부는 선택되어 있지 않습니다. C#에서는 모든 예외가 선택되어 있지 않습니다. – ayahuasca