광산의 응용 프로그램에서 여러 가지 오류 보고서가 발생했습니다. 내 코드의 다른 부분에서 호출되는 정적 정적 메서드가 여러 개있는 정적 클래스가 있습니다. 이러한 메소드의 대부분은 XML 문서에 요소를 작성합니다. 생성정적 메서드 Null 포인터 오류
private static XmlElement BuildCmd(string name)
{
XmlElement e = OtherClass.NewElement("CMD");
e.SetAttribute("type", name);
return e;
}
public static uint SendFlightReport(FlightData info, AircraftInfo aInfo)
{
XmlElement cmd = BuildCmd("pirep");
....
some other stuff
....
}
스택 덤프 :
이러한 방법의 가장 첫 줄
은 XML 문서의 요소를 생성하고 그것을 반환과 같이 동일한 클래스 전용 정적 메소드를 호출 인 예외로 모두 BuildCmd를 불쾌한 선이라고 부르는 행을보고합니다. 이는 의미가 없습니다. 정적 메서드를 호출 할 때 null 포인터 (또는 C#에서는 개체 참조가 개체의 인스턴스로 설정되지 않음)를 가질 수 있습니까?편집 :
public class OtherClass {
private readonly XmlDocument doc = new XmlDocument();
public XmlElement NewElement(string name) {
lock (doc)
return doc.CreateElement(name);
}
}
가능한 범인 :'OtherStaticClass' (아마도 정적 생성자) 또는'e' (OtherStaticClass.NewElement''의 반환 값). 디버깅을 시도 했습니까? –
"다른 것들"을 보여주십시오. 나는 (슬프게도, 큰 빈도로) 생산 환경의 스택 추적에서 라인 번호가 종종 완전히 잘못되었다는 사실과 씨름해야했다. 'BuildCmd ("pirep")'가 NRE를 던질 수 없다는 것은 (고통스럽게) 명백합니다. 그래서 그렇지 않습니다. 그러나 스택 추적의 메서드 이름은 결코 잘못되지 않습니다. 그래서 실제로'SendFlightReport'를 비난한다면, NRE는 거기에서 * defintely * 일어나고 있습니다. 전체 방법을 게시하십시오. –
"OtherStaticClass.NewElement ..."의 구현을 보여주는 것이 가치 있다고 생각합니다. – grant