더 나은 점 : int.TryParse 또는 try {int.Parse ()} catch
알아 .. 알아 ... 성능은 여기서 주요 관심사가 아니라 호기심 때문에 무엇이 더 좋을까요?
bool parsed = int.TryParse(string, out num);
if (parsed)
...
또는
try {
int.Parse(string);
}
catch () {
do something...
}
Better 는 매우 주관적입니다. 예를 들어, 저는 개인적으로를 선호합니다 int.TryParse
. 왜냐하면 대부분의 경우 파싱이 실패하더라도 왜 실패 하는지 신경 쓰지 않기 때문입니다. 그러나 int.Parse
( 문서 에 따르면 ) 세 가지 다른 예외를 던질 수 있습니다 .
- 입력이 null입니다.
- 입력이 유효한 형식이 아닙니다.
- 입력에 오버플로를 생성하는 숫자가 포함되어 있습니다.
실패 이유에 관심이 있다면 int.Parse
분명히 더 나은 선택입니다.
언제나 그렇듯이 컨텍스트가 왕입니다.
변환이 때때로 실패하는 것이 예외적 인가 아니면 변환이 때때로 실패 할 것으로 예상되고 정상 입니까? 전자 인 경우 예외를 사용하십시오 . 후자의 경우 예외를 피하십시오 . 예외는 이유 때문에 "예외"라고합니다. 예외적 인 상황 을 처리하기 위해서만 사용해야합니다 .
변환이 때때로 실패 할 것으로 예상되는 경우 다음 int.TryParse
과 같이 조건부 (Ternary) 연산자 를 사용 하여 한 줄에 깔끔하게 사용 하는 것을 좋아합니다.
int myInt = int.TryParse(myString, out myInt) ? myInt : 0;
이 경우 TryParse 메서드가 실패하면 0이 기본값으로 사용됩니다.
null
변환이 실패하면 기본값을 덮어 쓰는 nullable 형식에도 정말 유용 합니다.
첫번째. 두 번째는 예외에 의한 코딩으로 간주 됩니다 .
개인적으로 다음을 선호합니다.
if (int.TryParse(string, out num))
{
...
}
첫번째! 예외로 코딩해서는 안됩니다.
당신은 그것을 줄일 수 있습니다
if (int.TryParse(string, out num))
첫째, 단연코. George가 말했듯이 두 번째는 예외에 의한 코딩이며 성능에 큰 영향을 미칩니다. 그리고 성능은 항상 문제가되어야합니다.
예외를 잡는 것은 오버 헤드가 더 많으므로 TryParse를 사용하겠습니다.
또한 TryParse 메서드는 변환이 실패해도 예외를 throw하지 않습니다. s가 유효하지 않고 성공적으로 구문 분석 할 수없는 경우 FormatException을 테스트하기 위해 예외 처리를 사용할 필요가 없습니다.
여기 에서 복사 붙여 넣은 마지막 부분
염두에 두어야 할 또 다른 점은 Visual Studio 디버그 / 출력 창에 예외가 (선택적으로) 기록된다는 것입니다. 예외의 성능 오버 헤드가 사소한 경우에도 디버깅 할 때 각 예외에 대한 텍스트 줄을 작성하면 속도가 느려질 수 있습니다. 더 주목할만한 예외는 실패한 정수 구문 분석 작업의 모든 소음 사이에서도 익사 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/4945763/what-is-better-int-tryparse-or-try-int-parse-catch
'Program Tip' 카테고리의 다른 글
신속한 NSNumber에 대한 문자열 (0) | 2020.12.06 |
---|---|
숭고한 텍스트로 원격 파일을 여는 방법 3 (0) | 2020.12.06 |
정의되지 않은 메소드`image_will_change! ' (0) | 2020.12.06 |
문자열을 3 자리 숫자로 포맷 (0) | 2020.12.06 |
JSON 직렬화 된 데이터를 NSDictionary로 변환하는 방법 (0) | 2020.12.06 |