2013-08-25 4 views
0

코드를 작업하는 동안 catch를 시도하지 않고 다른 것을 사용했는지 궁금합니다. 예를 들어, 내가 double의 값 (콘솔에서)을 가지고 있고 사용자가 문자열 등을 입력하면 값을 다시 입력하라는 메시지가 나타납니다.텍스트 입력의 유효성을 검사 할 때 try-catch를 피하는 방법

나는 이것이 try-n-catch를 사용하여 아주 쉽게 할 수 있다는 것을 알고있다. 그러나 우리가 그것을하지 않고 어떻게 할 수 있는가?

가능하면 사례를 제공해주십시오.

+3

질문의 문제점은 무엇입니까? 예외를 던지면 비용이 많이 듭니다. 문제는 유효하지 않은 값을 파싱 할 때 예외가 발생하지 않도록하는 방법을 묻는 것입니다. (질문이 * 일반적으로 * 예외를 사용하지 않고 코드를 작성하는 것에 동의한다면, 텍스트는 완벽하게 유효한 특정 유스 케이스에 대해 분명합니다.) –

+0

일반적으로 try/catch를 피하면 지혜에 대해 묻고 있습니까? 문자열에서 double을 파싱하는 특별한 경우? –

+1

'double '검증을 handcoding하는 것을 권장하지 않습니다. 'parseDouble' 결과를 두 번째로 추측하는 것은 꽤 둥근 방법이며, 복잡합니다. 확인하는 과학 표기법, 네 가지 한계가있어 ... –

답변

8

슬프게도 JDK에는 다른 라이브러리에서 제공하는 TryParse 메서드가 없습니다. 나는 그것을하는 Apache Commons 또는 Guava에서 뭔가를 발견 놀랄 않을 것입니다.

Scanner을 사용하고 해당 hasNextDouble을 사용하여 확인을 할 수 있습니다.


당신은 일반적으로에서 예외 처리 방지하는 방법을 묻는 경우 :하지 마십시오. 예외는 프로그램에서 예외 조건을 처리하는 강력한 방법이며 확인 된 예외 (예 : 코드에서 예외를 처리해야 함, 그렇지 않으면 선언해야 함)에서 제공하는 "처리 또는 선언"이 매우 유용합니다.

그러나 예제와 같이 사용자가 잘못된 입력을 입력 한 사용자가 예외적 인 조건이 아니기 때문에 예외가 발생하지 않도록하고 싶은 경우와 같이 사용 사례가 일부 있습니다. 공통점. :-)

1

던지기 예외는 덜 강력하지만 try/catch 문으로 피하는 것이 좋습니다.

import java.io.*; 

public class UsingThrows { 
public static void main(String args[]) throws FileNotFoundException { 

FileInputStream fis = new FileInputStream("def.txt"); 
System.out.println("OK 1"); 

    } 
} 
+0

이것은 실제로 좋은 방법입니다 하지만 예외를 전혀 사용하고 싶지 않습니다. 다른 대안은 없습니까? – freetiger

관련 문제