Java에서 사용자 지정 예외 유형을 생성하는 방법
Java에서 사용자 지정 예외를 만들고 싶은데 어떻게 하지?
...
try{
...
String word=reader.readLine();
if(word.contains(" "))
/*create custom exception*/
}
catch(){
다음에 대한 사용자 지정 예외를 만들 때throw new...
, 나는 오류를 얻는다.unreported exception...must be caught or declared to be thrown
클래스를 확장하는 사용자 지정 예외 클래스를 만들 수 있어야 하는 예:
class WordContainsException extends Exception
{
// Parameterless Constructor
public WordContainsException() {}
// Constructor that accepts a message
public WordContainsException(String message)
{
super(message);
}
}
사용량:
try
{
if(word.contains(" "))
{
throw new WordContainsException();
}
}
catch(WordContainsException ex)
{
// Process message however you would like
}
다음에서 확장되는 클래스를 만들어야 하는 경우Exception
. 이렇게 보여야 한다.
public class MyOwnException extends Exception {
public MyOwnException () {
}
public MyOwnException (String message) {
super (message);
}
public MyOwnException (Throwable cause) {
super (cause);
}
public MyOwnException (String message, Throwable cause) {
super (message, cause);
}
}
질문은 이 새로운 예외를 선택해야 하는지 여부를 지정하지 않는다.
여기서 볼 수 있듯이 두 가지 유형이 다르다.
체크된 예외는 사용자의 메서드에 전화를 거는 개발자가 처리해야 하는 문제 상황에 플래그를 표시하기 위한 것이다.그런 예외에서 회복할 수 있어야 한다.이에 대한 좋은 예가 FileNotFoundException이다.그러한 예외는 예외의 하위 분류들이다.
선택되지 않은 예외는 코드에서 버그를 나타내기 위한 것으로, 사용자가 복구하지 못할 수 있는 예기치 않은 상황을 의미한다.NullPointer예외는 고전적인 예다.이러한 예외는 런타임의 하위 클래스임예외
점검된 예외사항은 반드시 통화방법으로 취급해야 하며, 이를 포착하여 그에 따라 행동하거나, 통화방법에 던짐으로써 처리해야 한다.견제받지 않는 예외는 가능한 일이긴 하지만 적발될 수 없다는 뜻이다.
사용자 지정 예외 클래스 만들기에 대한 좋은 답변.만약 당신이 문제의 예외를 재사용할 생각이라면 나는 그들의 대답/권고를 따르겠다.그러나 메시지와 함께 던져진 빠른 예외만 필요한 경우 현장에서 기본 예외 클래스를 사용할 수 있다.
String word=reader.readLine();
if(word.contains(" "))
/*create custom exeception*/
throw new Exception("My one time exception with some message!");
}
신중한 프로그래머는 종종 특별한 경우에 예외를 두기 때문에, 다음과 같은 몇 가지 일반적인 목적의 예외를 언급할 가치가 있다.IllegalArgumentException
그리고UnsupportedOperationException
.IllegalArgumentException
내가 가장 좋아하는 것:
throw new IllegalArgumentException("Word contains blank: " + word);
그냥 예외를 만들고 던질 수 있기 때문에 그만큼 쉬울 수 있다.
if ( word.contains(" ") )
{
throw new RuntimeException ( "Word contains one or more spaces" ) ;
}
좀 더 격식을 차리려면 예외 클래스를 생성하십시오.
class SpaceyWordException extends RuntimeException
{
}
어느 쪽이든, 만약 당신이 사용한다면RuntimeException
, 당신의 새로운 것.Exception
통제되지 않을 것이다.
예외는 다른 클래스와 같은 클래스인데, 그 클래스가 확장된다는 점을 제외하면. 그래서 만약 당신이 자신만의 클래스를 만든다면.
public class MyCustomException extends Exception
에게 그런 예를 들 수 있다
throw new MyCustomException( ... );
//using whatever constructor params you decide to use
그리고 이것은 흥미로운 읽을거리일 것이다.
예외(확인된 예외의 경우) 또는 예외 또는 런타임의 하위 클래스를 확장하는 클래스만 생성하십시오.예외(런타임 예외의 경우) 또는 런타임의 모든 하위 클래스예외.
그럼, 당신의 코드에, 그냥 사용하시오.
if (word.contains(" "))
throw new MyException("some message");
}
Java 자습서를 읽어 보십시오.이것은 모든 자바 개발자들이 알아야 할 기본적인 것이다: http://docs.oracle.com/javase/tutorial/essential/exceptions/
다른 곳에서 예외를 새 클래스로 정의해야 함
public class YourCustomException extends Exception{
//Required inherited methods here
}
그러면 YourCustom을 던지고 잡을 수 있다.네가 원하는 만큼만 예외로 해.
다음에서 상속하여 사용자 자신의 예외를 만들 수 있음java.lang.Exception
당신이 그것을 하는데 도움을 줄 수 있는 예가 여기 있다.
참조URL: https://stackoverflow.com/questions/8423700/how-to-create-a-custom-exception-type-in-java
'Programing' 카테고리의 다른 글
HH의 시간 형식 변경:MM:SS (0) | 2022.05.16 |
---|---|
VueJS: Dev Tools의 클릭 이벤트에서 이 데이터 속성이 업데이트되지 않는 이유 (0) | 2022.05.16 |
Thread.current를 호출하는 이유캐치 인터럽트Exception 블록의 스레드.인터럽트()? (0) | 2022.05.16 |
옵션이 개체 배열인 경우 vue-다중 선택 옵션을 미리 선택하는 방법 (0) | 2022.05.16 |
외부와 콘스탄트 혼합 (0) | 2022.05.16 |