2015-02-24 3 views
-3

Как это возможно, что брошено объект TimeoutException является недействительным, и он бросаетTimeoutException равна нулю при метании

ссылка на объект не указывает на экземпляр объекта.

в следующей строке:

writeToLog (e2.ToString());

Проверьте этот код.

WebServiceRef.CallResponse callResponse = null; 
try 
{ 
    callResponse = webServiceClient.Call(callRequest); 
} 
catch (TimeoutException e) 
{ 
    try 
    { 
     WebServiceRef.CallStatusResponse callStatusResponse = webServiceClient.CallStatus(callStatusRequest); 
     if (callStatusResponse.ResponseCode != 0) 
     { 
      throw new Exception("nok: " + callResponse.ResponseCode); 
     } 
    } 
    catch (TimeoutException e2) 
    { 
     writeToLog(e2.ToString()); 
    } 
} 

Это мой метод writeToLog.

private static void writeToLog(String logMsg) 
{ 
    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"log.txt", true)) 
    { 
     file.WriteLine(DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss ") + logMsg); 
    } 
} 

StackTrace и сообщения заключается в следующем:

Object reference not set to an instance of an object. 
at ...(...) in c:\...cs:line 82 
at ...(...) in c:\...cs:line 193 

линия 82 является точкой, в

writeToLog (e2.ToString());

+2

Этого не может быть и нет. У вас есть полный стек исключения и обновлены ли ваши отладочные символы? (Очистите и перестройте, если вы не уверены.) Убедитесь, что 'writeLog' - это не метод, который бросает' NullReferenceException'. –

+0

@fritz Невозможно выбрасывать исключение NULL, и поэтому невозможно исключить исключение null, поэтому код, который вы показываете нам, не может быть фактическим кодом. –

+1

Вы уверены, что это строка кода, которая бросает исключение? Попробуйте включить _Debug -> Исключения -> «Исключения для обычного языка Runtime» -> Thrown_ и повторный запуск кода. –

ответ

0

Невозможно указать нуль Exception экземпляр может быть выброшен/пойман.

Либо что-то должно быть неправильно с вашими отладочными символами, либо вы не используете правильную программу. Попробуйте зарегистрировать некоторые тестовые строки здесь и там, чтобы убедиться, что правильный код выполнен:

//... 
catch (TimeoutException e2) 
{ 
    Debug.WriteLine("If you don't see this in the output window then somehow you are not running this app."); 
    writeToLog(e2.ToString()); 
} 
//... 
+0

Да, спасибо. Была проблема в строке ниже ... Но, что беспокоит меня - .pdb и .exe файлы до 2 дней, так как может приложение печатать неверный номер строки? :( – fritz

+0

@fritz I ' Я боюсь, что нет простого способа диагностировать это с моей стороны. Однако вы можете удалить оба файла и снова создать свой проект. – Crono