문제

참고:이 중복된 제프의 질문.

는 묻는 질문에는"에 해당?" 나는 알 수 없고 나는 이유를 알고 싶어!

는 이유는 내가 단지가 명확하에 얼마나 중요한지,그리고 결론을 보이 아주 이상한다.

예외 처리 블록 Microsoft 엔터프라이즈 라이브러리로 우리를 조언이 패턴을 사용:

catch (Exception x)
{
    if (ExceptionPolicy.HandleException(x, ExceptionPolicies.MyPolicy))
        throw;

    // recover from x somehow
}

정책 XML 파일에 정의되는,그래서 그 의미가 있는 문제,우리는 수정할 수 있는 정책을 지원하는 추적(혹은 도 이상)문제를 그들에게 빨리 해결될 때까지 우리가 그것이 제대로를 포함할 수 있습니다 주장과 제 3 자 대해,그의 잘못입니다.

이것은 기본적으로 승인을 단순한 사실을 실제 응용 프로그램에서는 수의 예외는 형식 및 그들의"복구 가능성"상태를 실질적으로 불가능하게 관리하지 않고 같은 시설이다.

한편,CLR 팀 MS 말하는 옵션이 아닙니다,그리고 밝혀 그 사람들이 무엇에 대해 얘기!문제는 전에 오른쪽 catch 블록 실행되는,모든 finally 블록 안에 중첩 try 블록이 실행됩니다.그래서 사람들 finally 블록 중 하나를 수행 할 수 있습니다 다음과 같다:

  • 냈을 수정하는 프로그램 상태(휴,운).
  • 쓰레기에서 중요한 일이 고객의 데이터이기 때문에,프로그램 상태에는 나사로를 알 수 없는 정도입니다.
  • 위장하거나 파괴하는 중요한 증거는 우리가 필요한 문제를 진단하는 경우에 우리가 얘기하는 통화로 원시 코드입니다.
  • 던지 또 다른 예외에 추가,일반적인 혼란과 고통을.

Note using 문 C++/CLI 소멸자에 건설 try/finally, 다,그래서 그들도 영향을 받습니다.

그래서 명확하게 catch/throw 패턴에 대한 예외를 필터링은 좋지 않습니다.실제로 무엇이 필요한 방법으로 예외를 필터링을 통해 정책을하지 않고,실제로 그들을 잡고도록 트리거링 실행 finally 블록하지 않는 한,우리는 우리 정책을 찾기는 제외 안전에서 복구합니다.

CLR 팀을 블로그에 대한 최고:

결과는 우리를 도우미 기능 VB.NET 할 수 있도록 이 중요한 기능을에서는 C#.큰 단서는 문제가 있는 코드에서 BCL 않는다.많은 사람들의 블로그에 대한 그것을 하고 있지만,그들은 거의 경우 언급하는 것에 대해 try/finally 블록입니다.

내가 무엇을 알고 싶:

  • 이 있는 대중 문의 또는 이메일을 직접 사람에게서 받은 C#팀 이 주제에 대?
  • 은 거기에 기존의 연결 Microsoft 안 요구에 대한 이?내가 들어의 소문이 그들의 가능성이 높은 키워드를 설정.

업데이트: 위에서 언급했듯이,내가 이미 이 검색에 연결 Microsoft 아무것도 발견하지 않고.또한(unsurprisingly)봤.나는 단지 사람들이 발견 는 이유를 설명하는 그들이 필요 기능, 또리 이점에서 그것의 VB.NET, 또 fruitlessly 될 것으로 기대할 향후 버전에 추가의 C#, 나 작업 주변, 고 많 오해의 소지가 조언.하지만 문서에 대한 이론적 근거를 생략하면 그것은 모든 현재 버전의 C#.고 난 이유에 대해 묻는 기존 연결하는 문제입니다 그래서는(a)내가 만들지 않는 불필요한 중복되며(b)내가 말할 수 있는 관심있는 사람들이 있는 경우를 만듭니다.

Update2: 발견 흥미로운 오래된 블로그 포스팅에서 Eric Gunnerson, 이전의 C#팀:

"그래,할 수있는 조건을 넣어에 catch 은 좀 더 편리한 하는 것 보다 테스트를 작성 자신이지만,그렇지 않은 정말 사용 당신은 아무것도 할 새로운."

는 같은 가정했을 때까지 그것이 제대로 설명했다.

도움이 되었습니까?

해결책

으로 기존의 연결하는 버그가 있습니다.다음과 같은 문제품 제외 fliters.사용자에게 명시적으로 그들이 원하는 실제 필터의 의미에서 실행할 때 그러나 이럴 그것은 묵시적으로 논리입니다.

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=401668

게다가 문제지만,문제가 없을 찾을 수 있습 또는 알고 있는 관련 당신이 무엇을 찾고 있습니다.내가 생각하는 것이 좋은 별도의 문제를 명시적으로 호출에 대한 원 VB.Net 스타일은 제외합니다.

나지 않을 너무 많이 걱정 도입에 대해 중복되는 질문을 했을 경우 약간의 실사를 찾고를 위해 기존의 하나입니다.이 있는 경우 속,Mads 이 속는 그에 따라과 링크에 당신을 기본 요청을 합니다.

로 부분에 대한의 공식 응답 C#팀은,당신은 가능성이 얻을 때 당신은 모두 1)파일에 연결하는 버그 또는 2)가 속에 주요 버그입니다.정말 의심있는 공유/칭됩니다.

여기'의 내 에 문제점:나의 추측하는 이 기능은 단순히지 않은 원래는 C#1.0 기능을 설정하고 이후로는 시간이 없었다는 충분한 수요으로 그것을 만들의 언어.C#고 VB 팀을 보내고 믿을 수 없는 양의 시간 순위 언어 기능의 시작에서 모든 배는 주기입니다.는 일부를 어려운 상처니다.없이 충분한 수요가 매우 작은 기회가 기능으로 그것을 만들 것입니다.

최근까지는 내가 당하는 1 10 사람들 사이의 차이를 이해 VB.Net's Try/경우와 사용하여 기존의 일반하는 경우 문서는 C#하고 있습니다.는 것에 좀 더 사람들의 마음 요즘 그래서 어쩌면 그것은 그것으로 향후 버전을 표합니다.

다른 팁

예외의 필터를 주입 할 수 있는 것보다 간단을 사용하여 대리인 해결 방법입니다.

에 대한 진정한 당신의 질문에 대한 대답은 당신이 필요 응답을 Anders Hejlsberg,또는 누군가에서 원래 디자인다.당신이 볼 수도 있습을 보고 당신이 그것을 얻을 수 있다면 요청에 의해 채널 9 면접관이 다음 C#디자인 팀은 인터뷰.

나는 생각할 때 원래 결정,예외가 필터를 볼 수 있었으로 불필요한 합병증을 할 수있는 더 많은 피해보다 좋다.할 수 있는 확실히 표시하는 욕망을 남아 있을'침묵하는'에 대해 검증되지 않은 기능이 인터뷰에 대한 결정을 지원하지 않 확인된 예외 사항: 문제로 확인된 예외 사항 .

나는 생각 postmoterm 진단 시나리오를 강력하게 주장에 대한 액세스를 제공하는 예외의 필터에서는 언어입니다.그러나 그러한 시나리오되지 않을 수 있지만 분명히 말한다.또한 그러한 시나리오 정말 필요한 적절한 장식새김을 지원하는 확실히 사용할 수 없 V1.마지막으로 있을 수 있습 큰 네거티브에 대한 이 기능을 추가하지 않고 있다는 것을 고려하고있다.

이 없는 경우 연결하는 버그에서 이야 중 하나를 입력하고 다른 사람들을 격려하여 투표한다.[내가 권하고 싶 요구에 대한 액세스를 CLR 기능하는 것보다는 디자인 방법에 맞는 언어입니다.]

나는 그것을 믿지 않는 자바 필터가 있는 옵션이다.추측하는 경우,우리는 것도 한 C#.VB.net 가능성이 높은 중 하나에 의해 기회가 주어진 VB 팀으로 시작 깨끗한 상태입니다.

는 한도에서 당신의 찬성으로까지 확보 이 옵션의 이후 버전에서는 C#마이크로소프트의 명시된 목표 패리티를 유지하기 위해 사이의 언어로 기능 향후 버전에서의 C#VB.net.나는 앞으로 내 arguement 기반으로 합니다.

http://www.chriseargle.com/post/2009/01/Parity-Between-Languages.aspx

에 관해서 첫 번째 질문이있는 경우,공 성명,그것보다 더 많은 가능성이에 넣어 웹사이 어딘가에,는 경우 Google 은 사용자 설정해야하는 뭔가가(존재하는 경우).

면 그것은 직접 이메일로 C#팀이 다음 그것은 이상을 가능성이 높은 NDA 아래에,그래서 그것을 할 수 없을 것 게시 할 수 있습니다.

두 번째 질문이 있을 검색 기능은 Microsoft 연결에서는 화면이 표시되도록 합니 들어가기 전에 새로운 제안을 줍니다.는 경우에 당신은 그것을 찾을 수 없습니다,그런 다음 거기에 아마 하나입니다.

나의 권고를 올리는 것입니다 제안,다음을 촉진 그것은 다른 사람을 얻을에 무게에 있습니다.

제가 이해하기로는 그 순간에 다시 발생시킬,마지막으로 처리기에서 내부 기능을 수행하고 그 무엇이 문제가 발생합니다.

하지만 예외가 필터를 통과하는 예외를 통해 실 rethrowing 니다.당신은 여전히 그것을 처리하게 어딘가에,그리고 당신은 실행에서 동일한 종류의 문제(마지막으로 효과)입니다.

그렇지 않으면 나는 오해가 없이 큰 이득에서는 언어로 지원하는 예외의 필터입니다.

나는 생각할 수 있는 적어도 두 가지 이유는 예외의 필터링에서 존재하지 않는 C#

  1. 수 있도록 예외의 필터 수 있습을 장려 프로그래머의 일을 하는 동안 첫번째 예외 처리는 될 것이 안전하지 않은 시간에,심지어 하지만 그들은 할 수 있는 안전하게 내에서는'잡을'이나'마지막으로'.예를 들어,만약 코드 내에서"시도"블록을 획득하고 예외가 발생하는 동안 잠금,잠금 개최됩니다 실행하는 동안 외부 예외의 필터지만,출시하기 전에 외부의 잡아""또는"마지막으로"구획은 실행됩니다.또한,적어도 마지막으로 시간을 확인,예외에서 발생하는 예외의 필터와 발견되지 않 이내에 그것은 자동으로 질식가의 추악한 상황이다.
  2. 의 구현 C#의 비전을 가지고 자신들의 언어'틀에 얽매이'.경 C#지원합니다.net 첫번째 예외의 필터링,프로그램을 사용하는 기능도 사용할 수 없에 프레임워크를 처리하는 예외는 다릅니다.이것은 동일한 이유는 C#프로그램을 금지하의`객체입니다.을 마무리()`.는 동안 추론 주변의`객체입니다.을 마무리()`는 결함이(정확한 사용의 소멸자의 사용을 필요로 다른 플랫폼-특정 방법,그래서 그 사용을 요구의 소멸에 대한 구문을`개체입니다.을 마무리()`달성을 제외하고 아무것도 t77o 격려의 쓰기에 결함이 있는 소프트웨어)를 추론가들에게 어떤 의미에 관한 예외의 필터입니다.다른 한편으로,적절한 방법을 다루는 것을 노출하는 몇 가지 예외가 필 관련 기능이 있어도 표시하지 않는 예외의 필터 직접 있습니다.

하나의 기능이 내가 정말 좋아에서 볼 C#vb 는 사용을 필요로 예외의 필터 구현하는 것이 필요하지 노출을 직접 것 선택 Exception 에 대한 매개변수 finally 니다.이 매개 변수 null 지 않은 경우 포착되지 않는 예외가 발생합니다;그렇지 않으면 그것을 보유를 제외에서 질문입니다.이용 상황에 대한 프로그램이 원하는 무언가를 하는 경우 예외가 발생하지만,실제로"처리"니다.대부분의 경우, Exception 매개 변수는 사용 하지 않을 제외하고는 아무 것도 확인 null (을 의미하는 것에 해당 노출 fault 블록)지만,그것은 이점을 제공한 경우에는 예외가 발생하는 동안 정리입니다.현재,예외가 발생하는 경우에는 중 finally 블록하는 것이 필요 하거나 억압 finally-차단 예외 또는 덮어쓰기는 기존의 하나입니다.는 이전 예외 사용할 수 있는 finally 블록의 코드를 사용하거나 포장이나 로그습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top