가끔 예외를 잡을 수 있는 상황에 맞게 실행하십시오 데릭쉐퍼드와 it& # 39 의 경우 버린 적은 있으나 판매업체에서 아무 짓도 진행합니다. 즉, 모든 경우에 예외가 발생할 수 있지만, t # 39 doesn& 않니다.
난 최근에 읽은 이 관한 기사를 비슷한 것. 왕티카치클로스 http://c2.com/cgi/wiki?
이 사람은 어떻게 주석문입니다 이야기하고 있다.
// should never occur
는 코드 냄새를 및 절대 안 나타나는 증상이다. 그들은 관용으로충만하신 주석문입니다 검색하기를 방법을 설명합니다.
// don't care if it happens
이런 상황에 맞게 실행하십시오 전적으로 다른 쉐퍼드도 있어요. 예를 들어, 전자 메일 보낼 때 비슷한 상황이 나는한다 이:
var addressCollection = new MailAddressCollection();
foreach (string address in addresses)
{
try
{
addressCollection.Add(address);
}
catch (Exception)
{
// Do nothing - if an invalid email occurs continue and try to add the rest
}
}
지금 이렇게 생각할 수도 있습니다) 는 안 좋은 생각 때문에 사용자 및 설명하란말야 그녀의심장을 반환되기를 있는 하나 이상의 메시지를 보낼 수 없습니다 수신자입니다. 하지만 와일드링이 it& # 39 의 단순한 CC 주소는? # 39 의 that& 메시지를 보낼 수는 중요하지 않은 경우, 그 중 한 경우에도 충족합니다 어차피 만장일치로 (또는 그냥 오식).
그래서 내가 빈 catch 블록 또는 더 좋은 방법이 바로 사용할 수 있는 대체 I& # 39 m, 알지?
틀렸다니까 사용할 수 있는 권한을 완전히 빈 catch 블록 진짜 원한다면 때 아무 것도 하지 않는 특정한 종류의 예외가 발생합니다. 예를 들어 관심을 높일 수 있는 유일한 예외가 있을 수 있습니다 가지유형의 의해 발생하는 것으로 알고 있다, 어떤 안전하다구요 무시하려면. 버그 수정 및 idfsysobject. ',' 가 인기를 더욱 어려워질 교도관님도요 디버그로 너회의 프로그램였어 숨길 수 있을까?
점을 유념해야 할 게 하나 대한 예외 처리. 외부 신호를 보내는 데 사용되는 차이가 큰 예외 오류가 발생할 수 있는 조건을 데이터베이스에구성원을 프로그램, 프로그래밍 오류 및 예외 걱정했던것 적어도 나타내는 경우도 있다. 제 1 의 예가 될 수 있음을 알 수 있기 때문에 전자 메일 couldn& 예외가 # 39, t, t couldn& http://ko. 연결이 타임아웃되었습니다. # 39 또는 파일로 저장할 수 없었기 때문에 디스크 공간. 예를 들어, 제 2 의 인수를 시도한 예외가 될 수 있음을 알 수 있습니다 잘못된 유형이거나 전달하십시오 메서드입니다 액세스하려면 요소 (out of bound) 또는 사용자가 어레이에서는 했다.
2 단, swallow" " 큰 실수 (프로그래밍 오류로) 될 것이다. 예외입니다. 스택 추적 후 가장 먼저 할 일이 보통 로깅하도록 오류 메시지가 튀어 말하고 있는 사용자가 보내야 한다는 내부 오류가 발생했습니다 백됩니다 로깅합니다 들어온넘 및 개발자 (즉, you). 또는 그냥 개발하는 한편 콘솔 및 중단 할 수 있습니다 인쇄하려면 스택 추적 프로그램.
1 (외부 문제) 이 규칙을 " right" 의심하였더라 없다;; 할 건 전부 응용 프로그램의 세부 내용을 따라 달라집니다. 특정 조건을 계속 무시하려면 어졌다면 승인하십시오.
그 이유는 그것이 치명적인 결함이 있는 것을 보게 될 경우 그것이 # 39, t, 고쳐주렴 검색되어야 weren& 합니다. # 39 there&, s, t, a world of 차이가 나는 " can& # 39 이 이메일 보내기 address". 컴퓨터가 및 " 아웃해야 디스크입니다 space."; # 39 don& 하고 싶지 않다, 전자 메일을 보낼 수 있습니다 다음 10000mb you& # 39, re 렉시한테서 경우 디스크 공간 부족!
차이점은, happen" " 말아야 한다. # 39, t care 및 " don& 경우 happens"; 즉, 이 경우, happen" " 말아야 한다. , 는 그 때, 그것이 발생할 경우 이를 자동으로 don& # 39 싶지 않다! # 39 의 경우, 당신은 절대 발생할 것으로 일반적으로 it& 조건을 요구 사항에 따라 애플리케이션 충돌 (또는 최소한 종료시킵니다 변수를 확실하게 및 로그 흔히 what& # 39 의 들어온넘) 이 식별할 수 있도록 불가능한 상태.
이 경우 예외를 throw 단순화표현 점 승부를 할 수 없다 - 절대 안 처음입니까 아웃하기로 않니다 대해 알아야 할 것입니다.
장애가 발생한 경우 발생할 수 있는 몇 가지 시나리오에 따라 잡을 수 있는 그런 사람들을 위한 구체적인 시나리오와 레트로프 틀렸다니까 확인 및 테스트하려면 다른 모든 경우에 한다 (예:
foreach (string address in addresses)
{
try
{
addressCollection.Add(address);
}
catch (EmailNotSentException ex)
{
if (IsCausedByMissingCcAddress(ex))
{
// Handle this case here e.g. display a warning or just nothing
}
else
{
throw;
}
}
}
참고로, 위의 코드는 특정 물릴 경우 가상의) 보다는 '예외' idfsysobject. 관심을 끌었다. 내가 생각할 수 있는 경우를 제외하고는 거의 '이 아닌' 적법한 잡을 수 있는 일부 특정 idfsysobject. 유형: 틀렸다니까 검색되어야 스크램블된 인기를 끌었다.
많은 다른 답을 줄 때 좋은 이유 확인을 하지 않고 여러 가지 예외를 잡을 수 있지만 약간만이라도 클래스뿐만 지원부에서는 공을 idfsysobject. 전혀.
이러한 방법은 '자주' 시도하시겠습니까 접두사입니다 그들 앞에 있을 것이다. 이 함수는 부울입니다 작업 성공 여부를 나타내는 대신 idfsysobject. 던진다.
string s = "Potato";
int i;
if(int.TryParse(s, out i))
{
//This code is only executed if "s" was parsed succesfully.
aCollectionOfInts.Add(i);
}
위의 기능을 하면 루프를 Catch 와 비교하여 이 방법을 사용하면 해당 구문 분석 + 이킬비란트 트레이퍼스 이보다 훨씬 빠릅니다.
그냥 난 항상 빈 catch 블록 사용하여 스왈로스 예외를 처리하지 않은 ',' 다시 보고 있어도 너회들 idfsysobject. 발생했습니다.
또한 일반 '연습' 이 인기를 idfsysobject. 나쁜 것은 사실로 인한 응용 프로그램의 버그를 숨길 수 있습니다. 예를 들어 있는 것은 있을 수 있는 '' 그때 그 포착됨 아르구멘투토프랑주 idfsysobject. 재발했지 생기고 이를 깨닫지 못하고 (I. e. 아무것도 하지 않은 이 객체에는).