2013-02-14 2 views
1

rmas이라는 테이블에 일부 데이터를 삽입하려고합니다.서블릿 고유 제한 조건 예외

테이블 형식은 내가 RCODE에 대한 기본 키를 설정, 여기에

|rcode|rname|vcode|vanme 

입니다.

나는 기존 RCODE와 기록을 삽입하고있어, 그것은 .. 위반 ORA-0000-1 고유 제한 조건 같은 것을 표시

나는 다음과 같은 코드를 사용하고있는 경우는, 심지어에서 메시지를 표시 다른 오류의 경우.

catch(Exception e) 
{ 
//out.println("rcode already exists"); 
} 

따라서 기본 키 예외 만 인식하고 "rcode already exists"로 표시하고 싶습니다. 가능한가? 그렇다면 어떻게? 당신은 모든 예외의 슈퍼 클래스 인 Exception을 잡기하고 사전

+1

예외가 throw되는 컴파일러를 살펴보십시오. 예외 유형 – asifsid88

답변

1

감사합니다. 이것을 잡아 냄으로써 포켓몬 스타일 ("모두 잡을거야!")을 사용합니다. 이것은 일반적으로 나쁜 연습입니다. 왜냐하면 그 블록에서 던져진 특별한 예외를 기반으로 다른 행동 과정을 취할 능력을 잃어 버리기 때문입니다. 암호.

모든 예외에 대한 메시지 표시를 피하기 위해 제약 조건 위반과 관련된 예외 만 잡습니다.

왜 날 탈출 서블릿에이 일을 좋아하지만, 난 당신이 솔루션의 아키텍처를 살펴 제안하고 지속성 계층에서이 예외를 잡기 자신을 돌아, 계층화 된 접근 방식을 제공 할 것이다 결과 코드은 사용자에게 표시 할 메시지를 정의합니다.

참고 : 나는 성공적인 작동을 위해 코드를 반환 할 수 있도록 결과 코드하지 오류 코드을 사용했다.

0

서블릿에는 그런 코드가 없습니다. 나는 그것이 당신의 고집적 계층에 속하는 수업에 속한다고 생각합니다. 서블릿은 HTTP 리스너입니다. 데이터베이스 코드가 없어야합니다.

인터페이스 기반 지속성 클래스가 해당 예외를 잡아 적절하게 처리하도록하십시오. 지속성 클래스를 사용하여 유즈 케이스를 수행하는 인터페이스 기반 서비스를 작성하십시오. 서블릿이 서비스를 호출하고 무슨 일이 발생했는지에 따라 다음에 무엇을 표시할지 파악하십시오.

계층화 된 아키텍처라고합니다. 나는 그것을 매우 추천 할 것이다.

5

Exception은 모든 예외의 부모입니다. catch(Exception e) { } 블록이 작성되면 모든 예외가이 범주에 속하게됩니다. 컴파일러가 반환하는 예외를 찾아야합니다. 컴파일러는이 예외 SQLIntegrityConstraintViolationException을 반환하는 경우 다음 블록은 예외 블록의 수에는 제한이 없습니다 이런 식으로

catch(SQLIntegrityConstraintViolationException e) 
{ 
    // Error message for integrity constraint violation 
} 
catch(NullPointerException e) 
{ 
    // Null Pointer exception occured. 
} 
catch(Exception e) 
{ 
// Other error messages 
} 

올 것이라고 말한다.하지만보다 구체적인 예외 유형이 먼저 작성된 다음 부모 예외가 작성되었는지 확인하십시오.

+0

예, 이것이 필요합니다. 나는 체크 할 것이다 –

+1

컴파일러에서 EXCEPTION 타입을 보자. – asifsid88

+0

java.sql.BatchUpdateException을 던진다. – asifsid88