2010-01-14 1 views

답변

15

개체에는 이름이 없으므로 이름을 어떻게 나타낼 수 있습니까? 널 참조 는 변수에서로드 된 수 - 나는 등

JIT를 스택 정보에서 아마 모습 선언 된 참조 형이 무엇 해결하기 위해 할 수있는 방법으로 재산을 반환되었을 수 있습니다 그러나 이것이 얼마나 자주 도움이 될지 확신하지 못합니다.

나는 이것이 디버깅과 관련하여 엄청난 부담이된다는 것을 알 수 없다. 한 줄에 null이 될 수있는 많은 것들이 있다면, 보통 그걸 나누는 것이 좋습니다. 더.

+1

매우 자세한 스택 추적 덕분에 더 자세히 설명 할 필요가 없다고 생각합니다. 게다가 처음부터 이것을 피하기 위해 주장을 사용해야합니다. – ChaosPandion

+2

어떤 종류의 디버깅이라도 속도가 느려집니다. 그렇긴하지만 물건을 속력을 내서 느리게 할 것인지 아닌지를 생각해 보면, 물건을 속력을 내고 모든 물건을 분리 된 선으로 나눌 필요가 없으며 즉각적인 창으로 미쳐 버리는 것보다 어떤 객체가 null인가? –

+0

이 문제가 모두 부담스럽지 않다고 합의했습니다. null 참조 예외가 발생하기 전에 한두 줄은 정확히 초기화되지 않은 것을 알려줍니다. –

1

로 설정 때문에 그 말의 그것의 가장 일반적인 방법.

2

내게 이것은 순전히 선호의 문제처럼 보입니다. 그만큼 버그가 있다면 항상 NullReferenceException의 서브 클래스를 만들고 메시지를 변경할 수 있습니다. :)

메시지가 생성 될 때 사용할 수있는 정보의 양은 얼마가되는지에 달려 있습니다. 수동으로 몇 가지 추가 정보를 전달하지 않고 단순히 NullReferenceException 내부에서 null 인 필드의 이름을 결정하는 것은 약간의 부담이 큰 작업 인 리플렉션 (상당히 많은 비트)을 필요로합니다. 예를 들어 ArgumentNullException을 가져 와서 메시지가 문제의 매개 변수 이름을 나타내는 메시지를 던지려면 전화 할 때 문자열을 전달해야합니다 (throw new ArgumentNullException("param1")).

예외 메시지의 세부 수준은 완전히 정의 된 프로그래머에게 달려 있지만 예외를 throw 할 때는 시스템 집약적 인 작업을하지 않는 것이 좋습니다.

+0

프레임 워크가 NullReferenceException을 throw합니다. – ChaosPandion

+0

그래도 할 수 있지만 항상 try {} catch (NullReferenceException e) {throw new CoolerNullReferenceException (e)}'또는 그런 일이 있습니다. –

+0

아, 그 대답에 웃는 얼굴이 나타났습니다. :) – ChaosPandion

관련 문제