2016-06-23 2 views
1

온라인 링크를 통해 8 개의 장치 네트워크에서 데이터를 가져와야하는 학술 소프트웨어를 작성하고 있습니다. 이 장치는 때때로 데이터가 없거나 null 데이터를 반환하는 방식으로 구성됩니다. 그리고이 데이터를 오랫동안 수집해야합니다. null stream이있을 때마다예외 발생 후 자동으로 계속

public static void ParseJsonStatic(string link, ...9) 
{ 
    /access the URLs in a suitable interval and process data 
    var client = new WebClient(); 
    var stream = client.OpenRead(link); 
    Debug.Assert(stream != null, "stream != null"); 
    var reader = new StreamReader(stream); 
    var rootObject = JsonConvert.DeserializeObject<RootObject>(reader.ReadToEnd()); 

    .... 
} 

그래서, Visual Studio를 일시 중지하고 나에게 예외 거품을 표시하고 나는이 버튼을 계속 클릭해야 할 것 : 여기 코드입니다.

enter image description here

이 문제를 처리하고 내 코드는 이러한 상황이 발생하면 처음부터 계속 실행되었는지 확인하는 방법이 있나요. 그래서 내가 원하는 것은 이것이다 :

while (stream == null) { ... retry to read stream and don't trigger nullPointerException... } 

중간에 일시 정지하여 특정 간격에 따라 데이터 수집의 내 목적을 실패하고 또한 내가 긴 간격에 대한 다음과 같은 무인을 떠날 수 없기 때문에.

감사합니다.

+1

원하는 것을 확신하지 못합니다. "while (stream == null) {... 스트림을 읽으려고합니다.}"와 (와) 비슷한가요? 아니면 "if (stream == null) {return}"입니까? – fafl

+0

'(stream == null) {... 스트림을 읽으려고 재 시도 ...}'하고 무언가를하고 싶습니다. –

+1

예외를 '해제'할 수 없습니다. 귀하의 컴퓨터가 당신에게 뭔가를 말한 방법은 잘못되었습니다. 당신이 할 수있는 일은 그것을 잡아 예외를 처리하는 무언가를 작성하는 것입니다 (즉, 모든 것을 루프에 배치하고 이스케이프 요소를 false로 설정하여 재시도 트리거). –

답변

3

이 시도 :

var stream = null; 
while (stream == null) { 
    stream = client.OpenRead(link) 
} 

을 어쩌면 당신은 또한 몇 시간 동안 기다리고 싶지 읽어 사이.

2

Visual Studio의 경우 : Ctrl + Alt + E 또는 디버그> 예외.

그러면 디버거가 중단 될 익스프레션을 선택할 수있는 창이 열립니다.

것들은 당신이 아마 "공용 언어 런타임 예외"

주에서됩니다에 intrested하는되는 여전히 디버깅을 깰 것이다 충돌 앱에 원인이 처리되지 않은 예외입니다. Try/Catch를 사용하여 예외를 처리해야합니다.

+0

감사합니다. –

0

이동 디버그 메뉴에 다음 예외

이 창은 디버그 메뉴로 이동하고 Windows를 선택에 액세스하려면 -> 예외 설정.

예외를 선택하고 입력하십시오. 예외를 위해 체크 박스 항목이 추가됩니다.

예외가 throw 될 때마다 해당 확인란이 선택되어 있으면 디버거가 일시 중지됩니다. 상황에 따라이 확인란의 선택을 취소해야합니다.

자세한 내용은 msdn의 link을 참조하십시오!