내 개체를 저장하는 데 문제가 있습니다. 이 코드를 살펴 :XmlSerializer.Serialize가 파일을 저장하지 않고 예외를 throw하지 않습니다.
public void SerializeToXML(String FileName)
{
XmlSerializer fSerializer = new XmlSerializer(typeof(Configuration));
using (Stream fStream = new FileStream(FileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
fSerializer.Serialize(fStream, this);
}
}
문제는 사용자가 하드 디스크의 위치에 권한이없는 경우,이 함수는 나에게 어떤 예외를 throw하지 않습니다 내 파일을 저장하지 않는다는 것입니다. 예를 들어 "C : \ test.xml"에 저장하면 아무 일도 일어나지 않습니다. 그리고 파일이 저장되지 않았는지 알고 싶습니다. 그 이유를 아는 것이 좋습니다.
주어진 위치에있는 파일이 있는지 확인하고 수동 예외를 throw 할 수 있지만 XmlSerializer 또는 FileStream 자체에서 수행하면 안됩니다. 시간에 대한
감사
편집 :
내가 몇 가지 추가 디버깅을했다 의심되면서. using
절을 사용하므로 디버그 섹션의 프로젝트 속성에서 "비 관리 코드 디버깅 사용"옵션을 선택해야합니다. 이 후에 예외가 디버깅 프로세스에 표시됩니다. 이 코드 위의 using
절을 교체 Edit2가
예외 트리거 : 나에게 매우 이상한 소리
public void SerializeToXML(String FileName)
{
XmlSerializer fSerializer = new XmlSerializer(typeof(Configuration));
Stream fStream = new FileStream(FileName, FileMode.Create, FileAccess.Write, FileShare.None);
try
{
fSerializer.Serialize(fStream, this);
}
finally
{
fStream.Close();
}
}
나는 (Jon처럼) 예외를 삼키고 있다고 생각합니다. 디버그 목적을 위해 try/catch를 추가하고 어딘가에 잡힌 예외를 작성하십시오 (또는 중단 점을 추가하십시오). 나는 그것이 그것을 설명 할 것 같다고 생각한다. –
내 의견을 읽어 보셨나요? Marc? 내가 DirectoryNotFoundException을 삼키지 않는다면, 명시 적으로하지 않는 한이 유형의 예외를 삼켜서는 안됩니다. 저는 디버거에서 여러 번 테스트했습니다. – Wodzu