java
  • try-catch
  • tostring
  • 2013-07-05 3 views 2 likes 
    2

    내 클래스의 표준 메서드가 보다 우선합니다.캐치 블록을 toString 메서드 내에서 시도하십시오

    이 방법에서 try catch를 사용하는 것이 좋습니까?

    @Override 
    public String toString() { 
        try { 
         return 
           "number='" + product.getProductNumber() + 
           ", locale=" + locale; 
        } catch (ProductException e) { 
         return super.toString(); 
        } 
    } 
    
    +0

    어떤 메소드가 ProductException을 던지고 있습니까? – Reddy

    +0

    아마도 "정상적인 연습"이 아닌 "우수 실행"인지 묻고 싶었을 것입니다. – zEro

    +0

    예, 실제로 포스트 캐치를 사용하여 – sergionni

    답변

    3

    아니요, 정상적인 방법은 아닙니다. 예외는 예외적 인 상황을 처리하는 데 사용되어야하며 일반적인 코드 흐름이 아닙니다.

    코드는 try/catch을 사용하여 예외를 적용하지 않고 처리 할 수있는 상황을 감지합니다. 그것은 다음과 같은 방법과 거의 비슷하다 : getProductNumber 호출이 그렇지 ProductExceptionfalse가 발생하지 않을 때

    @Override 
    public String toString() { 
        if (product.checkProductNumber()) { 
         return "number='" + product.getProductNumber() + 
           ", locale=" + locale; 
        } else { 
         return super.toString(); 
        } 
    } 
    

    상상 checkProductNumber 방법은 true를 반환합니다. checkProductNumber과 같은 메서드를 만들고 예외를 catch하는 대신 사용하면 일반적인 프로그램 흐름 중에 예외가 catch되는 메서드를 코딩하는 더 좋은 방법입니다.

    0

    이렇게하지 않는 이유는 분명하지 않습니다. 그러나 ProductException이 던져지면 현재 제안은 로캘 정보를 잃게됩니다. 당신은 단지)이 논리합 super.toString을 (원하는하지 않는 한, 어쩌면 당신은 같이해야합니다 :

    @Override 
    public String toString() { 
        String number = null; 
        try { 
         number = product.getProductNumber(); 
        } catch (ProductException e) { 
         number = "unknown: " + e.getMessage(); // or something like this 
        } 
        // here you may or may not include super.toString() 
        return super.toString() + ", number=" + number + ", locale=" + locale; 
    } 
    
    0

    나는 된 toString 시도 - 캐치의 사용을 보지 못했어요. 하지만 예외를 던질 수있는 몇 가지 메서드를 사용하는 경우 toString 내에서 try-catch를 사용하면 문제가 발생하지 않습니다.

    0

    예이 경우 아무런 문제가 없습니다. 예외가 발생하면 toString() 그 안에 try-catch{ }을 사용할 수 있습니다.

    0

    product.getProductNumber() 메서드를 사용하면 ProductException이 throw 될 수 있습니다. 올바른 방법입니다.

    +0

    게시물을 편집 한 것은 실제로 잘못되었습니다. – MinecraftShamrock

    2

    toString에서 Try/Catch를 사용하는 것이 일반적인 방법은 아니지만 toString method()에서 try/catch를 사용하는 데 제한이 없습니다.
    코드에서 try/catch를 제거하려면 누가이 ProductException 예외를 던 졌는지와이 예외가 throw되는 조건을 알고 있어야합니다. 이이 작업이 정상적으로 실행하거나 예외를 발생 여부를 확인하는 부울 옵션을 임시 방법을 만들 수 있습니다 경우 다음 예외를 선택하면

    • . @ dasblinkenlight 답변에 표시된 바와 같이.

    참고 : 가장 좋은 방법은 toString() 메소드는 항상 예외의 기회가없는 있도록/세터는 점점 값을 설정하는 데 사용됩니다 수완 일부 데이터를 포함하는 수업을 통해와 클래스의 그 유형에서 재정의되는 것을 말한다 .
    데이터에 대해 일부 작업을 수행하려면이 클래스 외부에서 수행하십시오. 이러한 유형의 클래스를 사용하여 데이터 만 포함하고 클래스 내에서 작업을 수행하지 마십시오 (극단적으로 필요한 경우에만 작은 작업 제외)

    관련 문제