예외적 인 일, 너무 자주 발생할 것으로 예상 할 수없는 일, 문제가 있음을 나타내는 일에는 예외를 사용하십시오. 예를 들어 네트워크가 다운 된 경우 웹 서버에서는 예외입니다. 데이터베이스를 사용할 수 없으면 문제가 있음을 의미합니다. 구성 파일이 없으면 사용자가 엉망이 된 것입니다.
잘못된 코드를 처리하기 위해 예외를 사용하지 마십시오. 코드의 정확성을 확인하려면 어설 션을 사용하거나 .NET Framework 4 이상에서 코드 계약 (어설 션을 대체하고 특히 유용한 추가 기능이있는 코드 계약)을 사용해야합니다.
예외가 아닌 경우에는 예외를 사용하지 마십시오. 사용자가 숫자를 입력하라는 요청을 받았을 때 "dog"을 입력했다는 사실은 예외가 아닙니다.
예외 유형을 선택할 때주의하십시오. 필요할 때 자신 만의 유형을 만드십시오. 부모를 잡는 것이 아이들을 잡을 것이라는 점을 명심하면서 상속을 신중하게 선택하십시오. 절대로 throw Exception.
오류에 리턴 코드를 사용하지 마십시오. 오류 코드는 쉽게 마스킹되고 무시되며 잊혀집니다. 오류가 있으면 처리하거나 상위 스택으로 전파하십시오.
메소드가 오류를 리턴 할 것으로 예상되고 오류가 예외가 아닌 경우, 열거 형을 사용하고 오류 번호는 절대 사용하지 마십시오. 예:
// Note that the operation fails pretty often, since it deals with the servers which are
// frequently unavailable, and the ones which send garbage instead of the actual data.
private LoadOperationResult LoadProductsFromWeb()
{
...
}
의 의미 LoadOperationResult.ServerUnavailable, LoadOperationResult.ParsingError데이터를 분석 할 수 없음 -, 등 그 코드를 서버가 다운이다 (12 개) 수단 및 코드 (13)를 기억, 말보다 훨씬 더 명시 적입니다.
특정 도메인에서 일하는 모든 개발자에게 알려진 공통 코드를 참조 할 때 오류 코드를 사용하십시오. 예를 들어 HTTP 404를 찾을 수 없음 또는 HTTP 500 내부 서버 오류에 대한 열거 형 값을 다시 만들지 마십시오.
부울에주의하십시오. 조만간 특정 방법의 성공 여부뿐만 아니라 그 이유를 알고 싶을 것입니다. 예외와 열거는 훨씬 강력합니다.
스택의 맨 위에 있지 않는 한 모든 예외를 포착하지 마십시오. 예외가 발생하면 처리 할 준비가되어 있어야합니다. 모든 것을 잡으면 코드가 올바르게 실행되는지 신경 쓰지 않는다는 것을 알 수 있습니다. 이렇게하면 "지금이 문제를 해결하는 방법을 검색하고 싶지 않습니다"를 해결할 수 있지만 조만간 당신을 해칠 것입니다.
C #에서는 다음과 같은 예외를 다시 발생시키지 마십시오.
catch (SomeException ex)
{
...
throw ex;
}
당신은 스택을 깨고 있기 때문에. 대신이 작업을 수행하십시오.
catch (SomeException)
{
...
throw;
}
예외 메시지를 작성할 때 노력하십시오. throw Exception("wrong data")또는 같은 것을 몇 번 이나 보았습니다 throw Exception("shouldn't call this method in this context"). 6 개월 후 자신을 포함한 다른 개발자들은 어떤 데이터가 잘못되었는지, 왜 어떤 이유를 문맥에서 어떤 방법으로 호출해야하는지, 어떤 문맥으로 정확하게 호출하지 않아야하는지 전혀 모를 것입니다.
사용자에게 예외 메시지를 표시하지 마십시오. 그것들은 평범한 사람들에게는 기대되지 않으며 종종 개발자 스스로 읽을 수 없습니다.
예외 메시지를 현지화하지 마십시오. 현지화 된 메시지에 대한 설명서를 검색하는 것은 매우 소중합니다. 모든 메시지는 영어와 영어로만 작성되어야합니다.
예외 및 오류에만 집중하지 마십시오. 로그도 매우 중요합니다.
.NET에서 메소드의 XML 문서에 예외를 포함시키는 것을 잊지 마십시오.
/// <exception cref="MyException">Description of the exception</exception>
XML 문서에 예외를 포함 시키면 라이브러리를 사용하는 사람이 훨씬 쉽게 작업 할 수 있습니다. 어떤 예외가 메소드에 의해 발생 될 수 있는지 추측하는 것보다 더 성가신 것은 없습니다.
이런 점에서 Java 예외 처리 는보다 강력하고 효과적인 접근 방법을 제공합니다. 호출 된 메소드에 의해 잠재적으로 발생하는 예외를 처리하거나 처리하지 않는 예외를 발생시킬 수 있음을 자신의 메소드로 선언하여 상황을 특히 투명하게 만듭니다.