TL; DR- 아니요 , 예외를 조용히 무시해서는 안됩니다.
가정을 보자.
.NET의 많은 결정은 자신이하는 일을 실제로 알고있는 사람들이 내린 결정임을 신뢰하는 법을 배웠으며, 일반적으로 그들이 결정한 것 뒤에는 매우 좋은 이유가 있습니다. 그러나 이것은 나를 피합니다.
MS는 정말 훌륭한 직원을 보유하고 있습니다. 그들은 또한 실마리가없고 지속적으로 나쁜 결정을 내리는 많은 관리자와 임원이 있습니다. 제품 개발을 주도하는 기술에 정통한 과학자의 동화를 믿고 싶다면 현실이 훨씬 더 어둡습니다.
내 요점은, 당신의 본능이 당신에게 무언가 잘못되었다고 말하면 그것이 잘못되었을 가능성이 높다는 것입니다.
이 경우 예외를 처리하는 방법은 기술적 결정이 아니라 인적 요소 결정입니다. 느슨하게 예외는 오류입니다. 형식이 잘못 되었더라도 오류 표시는 최종 사용자에게 중요한 정보를 제공합니다. 즉, 무언가 잘못되었습니다.
최종 사용자와 개발자 간의 이러한 가상 대화를 고려하십시오.
사용자 : 앱이 고장났습니다.
데브 : 무슨 일이야 ?
User : 몰라요, 버튼을 클릭해도 아무 변화가 없습니다.
Dev : 아무 일도 일어나지 않는다는 것은 무슨 뜻 입니까?
사용자 : 봐, 클릭하고 기다렸다가 기다렸다가 기다리면 아무것도 깨지지 않습니다 ... 분명히 깨졌습니다.
우리의 가난하고 불행하게도 가상의 개발자는 이제 일련의 사건에서 무엇이 잘못되었는지 파악해야합니다. 어디 있었지?
이벤트 핸들러 알림-> 이벤트를 처리하는 루틴-> 핸들러에 의해 트리거되는 메소드-> 비동기 호출의 시작-> OSI 네트워킹의 7 개 계층-> 물리적 전송-> OSI 네트워킹의 7 개 계층 백업-> 서비스 수신-> 서비스에서 호출 한 메소드-> ...-> 서비스에서 보낸 응답 리턴-> ....-> 비동기 수신-> 비동기 응답 처리-> ...
그리고 몇 가지 잠재적 인 오류 경로를 살펴 보았습니다.
기본 가정 중 일부를 해결 한 후 예외를 조용히 억제하는 것이 나쁜 생각 인 이유가 더 명확 해 졌다고 생각합니다. 예외 및 관련 오류 메시지는 사용자에게 문제가 있음을 나타내는 주요 지표입니다. 메시지가 최종 사용자에게 무의미하더라도 임베드 된 정보는 개발자에게 무엇이 잘못되었는지 이해하는 데 유용 할 수 있습니다. 운이 좋으면 메시지가 해결책으로 이어질 것입니다.
여기서 문제의 일부는 잘못 처리 된 예외가 응용 프로그램을 중단시키는 것입니다. 예외를 억제하면 응용 프로그램이 중단되지 않습니다. 비동기 시점은 데이터를 검색하는 동안 응용 프로그램이 계속 작동하도록 허용하는 것이기 때문에 이에 대한 일부 유효성이 있습니다. 결과를 기다리는 동안 계속 작동하면 검색 실패로 인해 응용 프로그램이 중단되지 않아야한다고 말하는 것은 논리적 확장이 아닙니다. 비동기 호출은 암시 적으로 응용 프로그램을 종료하기에 중요하지 않은 것으로 선언됩니다.
따라서 솔루션이지만 잘못된 문제를 해결하고 있습니다. 응용 프로그램이 계속 실행될 수 있도록 예외 처리에 래퍼를 제공하는 데 많은 노력을 기울이지 않습니다. 예외가 발생하고 오류 메시지가 화면에 표시되거나 기록되며 응용 프로그램을 계속 실행할 수 있습니다. 예외를 억제하면 오류를 무시하면 A-OK가되고 테스트를 통해 예외가 필드로 빠져 나가지 않는지 테스트 할 수 있습니다.
따라서 최종 평가는 사람들이 생각을 그 접근 방식으로 전환 할 준비가되지 않았을 때 사람들을 비동기식 모델로 밀어 냄으로써 발생하는 문제를 해결하려는 반쯤 구운 시도라는 것입니다.