당신은 이상 처리 코드를 이렇게 썼습니까?
DataSet QueryDB()
{
DataSet ds=null;
try
{
//do something
}
catch (Exception ex)
{
//
}
return ds;
}
다음과 같은 몇 가지 질문이 있습니다.
1:분명히QueryDB 방법에 어떤 이상이 발생하면 클라이언트는 알 수 없다. 예를 들어 클라이언트가QueryDB 방법을 호출하면 이 방법은null로 되돌아온다. 이것은 데이터베이스에 이 데이터가 없다는 것을 의미한다.아니면 이상을 던진 건가요?
2: 주석은 존재하지 말아야 합니다. 주석은 실제 로그 기록 코드로 대체되어야 합니다. 예를 들어 Log.Write(ex);
3: 이 방법은 모든 이상을 포착한다. 이렇게 하면 모든 이상이 포착된다. 이것은 개발에 매우 불편하다. 당신이 처리할 수 없는 이상을 영원히 포착하지 마라.
4: 코드를 왜 이렇게 써요?설명은 진실한 사용자는 잘못된 정보를 보고 싶지 않다. 처음에 듣기에는 몇 가지 일리가 있는 것 같다. 어떤 사용자도 당신의 소프트웨어를 사용하고 이상한 것을 던지지 않을 거라고 생각해 보자. 그러나 이것은 배치된 후의 일이다. 개발한 프로그래머가 이상한 것을 보고 싶지 않은 것이 아니다.개발할 때 상세한 이상 정보를 볼 수 있다면 빠르게 수정하고 버그를 복구할 수 있는데 왜 기꺼이 하지 않겠는가?
다음과 같이 수정되었습니다.
DataSet QueryDB()
{
DataSet ds = null;
try
{
//do something
}
catch (Exception ex)
{
Log.Write(ex);
throw ex;
}
return ds;
}
자, 이제 이상은 드디어 잡혔고, 던지는 데도 성공했어.
이 코드는 아직도 문제가 있습니까?
catch 문장 블록에서throw ex;throw로 수정하는 것이 좋습니다.
왜냐하면net에서 이상은 수정할 수 없습니다. 이상이 던져질 때마다 이상 추적 정보는 리셋됩니다.
Throw는 스택 추적 정보를 재설정하지 않지만throw ex;재설정됩니다.따라서 이상한 던지는 위치를 더욱 편리하게 찾기 위해throw문장을 사용하는 것이 좋다.throwex가 아니라throw문장을 사용하는 것이 좋다.그렇지 않으면clr는 이상이catch 문장 블록에서 던져졌다고 생각할 것입니다.
참고로 당신이 처리할 수 없는 이상을 포착하지 마세요. 앞으로 사용자가 이상 정보를 보지 못하길 바라면,
크게 AppDomain을 사용할 수 있습니다.또는 Application의 글로벌 예외 처리
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.