2014-04-11 2 views
-2

오케이, 여기 내 문제가 있습니다.동일한 클래스에서 n 개의 예외를 만들려면 어떻게해야합니까?

'UsernameAlreadyTakenException'과 같은 사용자 지정 예외를 만들고 싶습니다. Exception을 확장하는 파일에서 하나의 클래스를 만들 수 있습니다. 내 문제는, 나는 거의 아무것도하지 않는 각각의 '서브 클래스'에 대해 3 ~ 5 개의 서로 다른 파일을 갖고 싶지 않다는 것이다. 나는 그들을 모두 같은 파일에 붙이고 싶습니다. 이것이 가능한가, 그렇다면 어떻게 될까 ??

+1

각 예외 유형에 대해 3 ~ 5 개의 개별 파일을 생성하면됩니다. Java 프로그램에서는 파일 당 하나의 클래스를 갖는 것이 일반적입니다 (그리고'public' 클래스에 필요합니다). 특별한 트릭을 하나의 파일에 넣기 만하면되므로 특별한 방법을 시도하는 것보다 극복하는 것이 좋습니다. – Jesper

+0

3-5 개의 다른 파일을 원하는 이유는 무엇입니까? –

+0

여러 파일이 낭비되는 것처럼 보이기를 원하지 않습니다. 각 클래스는 생성자로만 구성됩니다. –

답변

1

정적 하위 클래스를 만들면이 작업을 수행 할 수 있습니다 (반드시 권장하지는 않지만). 자바를 컴파일하는 파일에 하나의 최상위 클래스가 public를 표시 할 수 있다는 것입니다 때 같은 파일 안에 여러 클래스를 배치에 대한

package com.sandbox; 

public class Sandbox { 
    public static void main(String[] args) throws Exception2 { 
     throw new Exception2(); 
    } 

    public static class Exception1 extends Exception { 

    } 

    public static class Exception2 extends Exception { 

    } 

    public static class Exception3 extends Exception { 

    } 


} 
+0

@Sam이 가져 오는 규칙을 잊어 버렸지 만, 내가 여기서 말하는 것은 "틀린"것이 아니므로 해결책 일 수 있으므로 왜 downvote가 있는지 알지 못합니다. –

+1

동의합니다. 솔루션이 완벽하게 유효합니다. – Sam

+1

더하기, 액세스 수준을 더 잘 제어 할 수 있습니다. – Sam

2

유일한 제한 : 다음은 그 예입니다. 이는 public 클래스가 동일한 이름의 파일에 있어야하고 동일한 이름을 가진 여러 클래스를 가질 수 없기 때문입니다.

일반적으로 불량 행위로 간주되며 클래스가 올바른 보호 수준을 보장하지는 않지만 추가 클래스를 선언 할 때는 public을 그대로 사용하면됩니다. 이것은 그들에게 default 보호를 줄 것입니다.

기본 보호의 의미 (다른 보호 수준)에 대한 좋은 설명은 this을 참조하십시오.

그래서 당신은 파일 UsernameAlreadyTakenException.java를 만들고 뭔가 같이 넣어 수 : 심지어 다른 파일 뭔가 이름을 수

public class UsernameAlreadyTakenException extends Exception { 
    ... 
} 
class MySecondException extends Exception { 
    ... 
} 
... 
class MyNthException extends Exception { 
    ... 
} 

,하지만 당신은 클래스 UsernameAlreadyTakenExceptionpublic로 표시 할 수 없습니다. 그러나 다시 한 번, frowned upon입니다. 일반적으로 각각의 고유 한 클래스마다 새 파일을 만드는 것이 좋습니다.