obj = null
또는 obj.member = null
과 같은 오류 조건에 대한 응답으로 여러 가지 C# 응용 프로그램 충돌이 발생했습니다. 3rdPartyApp의 인터페이스에서 많은 시간, obj. 그리고 3rdPartyApp와 MyCsApp가 모두 충돌했습니다.모든 예외를 삼키고 응용 프로그램이 손상되는 것을 어떻게 방지합니까?
모든 가능한 영역에서 예외 처리를 추가하여 이러한 상황에서 응용 프로그램이 생존 할 수있는 방법은 무엇입니까? 모든 장소에 try-catch를 추가하고 상황을 복구하는 것은 어려운 일입니다.
현실적이고 신뢰할 수 있으며 방탄하는 방식으로 어떻게이 작업을 수행 할 수 있습니까?
[업데이트 : 산업 자동화 제어]
구조 :
GUI (asp.net, C++) - RuntimeApp (C++) - MyCsApp (CS) - 3rdPartyApp (고사)
일반 절차 :
- HostApp는 - (이더넷 Cabele를 통해 연결) - MyCsApp에게
- 운영자 - GUI -의 Ru를 ntimeApp - MyCsApp
이상 조건 :
- 일부 비표준 작업 절차;
- 일부 하드웨어 문제가 발생했습니다.
- 는
더 나은 모든 abnormall 조건을 처리하는 것 등. 그리고 가장 중요한 것은, 나는 상황에서 어떻게 회복해야하는지 생각해야합니다. 당신은 확실히 시도 캐치를 추가해서는 안
대신 버그를 수정하는 것은 어떻습니까? – Aaronaught
@Aaronaught, 우리는 이미 일부 장소를 현재 보호하고 있습니다. 즉, 비정상적인 작업에서 cursh가 발생한 후에 만 고칠 수 있음을 의미합니다. MyCsApp는 3rdPartyApp을 기반으로하는 다중 스레드 응용 프로그램입니다. 여러 종류의 로그 (HostApp 로그, runtimeApp 로그, MyCsApp 로그 및 3rdPartyApp 로그)를 읽어야하며 문제를 복제하기 위해 최선을 다해야합니다. 그런 다음 해결할 수 있습니다. –
두 단어. 하지 마. 젠장, 그게 셋이야 ... 지금은 왜 그런지 말할 수있을거야. 필요할 때 앱이 정상적으로 종료되지 않게 할 수 있습니다. 아래의 다른 사람들이 언급 한 전역 및 스레드 수준의 예외 처리기를 사용하는 경우 도달했을 때해야 할 일에 대한 계획을 세우십시오. . . 버그를 수정하는 데 콜 스택을 포함하여 오류를 로깅하는 것이 좋습니다. 대부분의 경우에 앱을 계속 유지하는 것은 좋은 생각이 아닐 수도 있지만 ... 다시 한 번 ... 코드와 환경을 알고 있는지 확인하십시오. –