내 연구에서이 질문은 초기 닷 넷에서 많이 요구되었지만 IMHO에서는 많은 반응이 조금 나 빠졌고 ' 그게 우리가 지금하는 방식이야. '스타일. 그물이 조금 커지면 보자. 예 년경 1992C#의 오류 고토 (catch-all) 레이블에 대한 현대적인 접근
: 그것이
Sub Main()
On Error GoTo ErrHand
....Code Here
End Sub
ErrHand:
' raise error nicely here inc error no, desc, line & character pos
End Sub
어설픈대로 '오류에 고토 [캐치 올] 라벨'VB6에서 사용할 접근 방식은 예상치 못한 예외를 포착하고이를보고 있던 사용을했다. 모듈 번호, 예외의 행 번호 및 문자 위치와 함께 오류 번호 & 설명을보고 할 수 있습니다. 부지런한 개발자는 물론 예상되는 예외 및 비즈니스 논리 예외에 대한 코드를 작성합니다. 실수시 크리스탈 볼을 사용하지 않는 것에 대한 매우 유용한 해답이었습니다.
내 C# 친구들은 try-catch를 사용하라고 말하지만 동시에 folk-lore는 나쁜 방법이기 때문에 각 방법에 큰 try-catch를 넣지 말라고합니다.
그러나 내가 민속 전언의 정확한 출처에 대해 물을 때 대답이 없습니다.
그래서 오류 goto [catch-all] 레이블 구조에서 VB6의 C# equiv에 대한 2016 응답은 무엇이며 왜 각 모듈의 내용을 다음과 같이 표준화 된 try-catch로 줄 수는 없습니까? 같은 예기치 않은 예외 처리에 영향을 미칩니 까?
try/catch 라운드를 수행하는 것이 좋지 않다고 생각하십니까? 그렇습니다. 왜 전에 일종의 괜찮 았던 지 ... 우리가 전에 didnt하기 전에 잘 우리가 가지고있는 많은 것들이 있습니다. 이제는 if (stuff? .somethingelse == blah)를 사용하여 null 및 값을 테스트 할 수 있으므로 null로 바뀌지 않으므로 tryparse로 숫자 변환을 확인할 수 있습니다. 엄지 손가락 규칙은 이제 훨씬 더 현지화 된 테스트입니다. 코드가 진화하고 vb6으로 돌아가는 것은 40 년 전의 삶을 비교하는 것과 같습니다. 너무나 많이 변경되어 실제로 비교하기가 어렵습니다. – BugFinder
try {/ * ... 여기 코드 * /} catch (Exception ex) {...}. VB에서의 접근 방식보다 직접적인 변환이 가능합니다. Main() 진입 점에서 최상위 수준의 catch-em-all은 끔찍한 사례는 아니지만 일반적으로 AppDomain.CurrentDomain.UnhandledException 이벤트를 구독하는 것이 좋습니다. –
@BugFinder 감사합니다. 저는 게으른 해결책을 찾고 있지 않습니다 - 더 많은 벨트와 브레이스. 예외가 발생합니다. 우리는 귀하의 의견에 따라 예상 한 것을 처리하기 위해 열심히 노력하고 있습니다. 앱 소유자는 실시간으로 예외가 발생할 때 가장 빠른 수정을 원합니다. 즉, 정보가 필요하다는 의미입니다.즉, 예외를 잡아서 조사해야 사용할 수있는 단서를 얻을 수 있습니다. 그러므로 내 질문. VB6를 컨텍스트를 설정하는 빠른 방법이라고 언급하기로 결정했습니다. MS tool dev의 40 년은 반드시 우리가 더 나아진 것을 의미하지는 않습니다. –