다음과 같은 try-catch
문이 있는데 메시지 속성에 '내 오류'라는 텍스트가 있으면 예외를 throw하지 않습니다.C에서 예외를 프로그램 적으로 표시하지 않습니다.
어떻게 프로그래밍 방식으로이 작업을 수행 할 수 있습니까? 또한, 이것은 코드 - 냄새로 간주됩니까?
try
{
}
catch(Exception e)
{
if(e.Messages.Contains("My error"))
{
//want to display a friendly message and suppress the exception
}
else
{
throw e;
}
}
이것은 나쁜 코드 냄새입니다. 어떤 이유로 든 프레임 워크와 함께 살아야한다면, 코드가 수행 할 동일한 유형의 예외 만 throw합니다. 그러나'throw e;'또는'throw '(보통 당신은 후자를 원할 것입니다)를 쓰든간에 차이가 있음을 주목하십시오. –
이 냄새가 나쁜 또 다른 이유는이 기술을 사용하면 오류 문자열을 다른 언어로 현지화하지 못하게 할 수 있습니다. 또는 다른 사람의 오류 문자열을 찾는 경우 다음 버전에서 문자열을 변경하거나 사용자가 프랑스어 인 것으로 감지되면 다른 문자열을 가질 수 있습니다. –
그렇습니다. 전 동료가 대량의 Java 응용 프로그램에서 모든 catch (Exception e)를 catch (Throwable t)로 바꾼 경우보다 실제로 더 나쁠 수 있습니다. –