다음 코드는 NullReferenceException
을 생성하지만 (두 Debug
및 Release
모드에서) try 블록에 의해 체포되지 않습니다 강조예외가 잡히지 않는 이유는 무엇입니까?
using System;
namespace ExceptionTest {
public class Program {
public static void Main(string[] args) {
String text = null;
try {
if (text.Equals("t1")) {
Console.WriteLine("r1");
} else {
Console.WriteLine("r2");
}
} catch(Exception ex) {
Console.WriteLine("Exception catched!");
}
}
}
}
대신 프로그램 중단과 잘못된 라인 :
왜?
업데이트 : 스콧에 의해 제안 예외 텍스트 형 정보 : 예외 설정 아래에있는 예제 이미지에
System.NullReferenceException occurred
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=ExceptionTest
당신은 * 아마도 * 디버거가 첫 번째 예외에 휴식을 구성했습니다. 디버거를 연결하지 않고이 프로그램을 실행하면 "예외가 발생했습니다"라는 메시지가 인쇄됩니까? – vcsjones
또한'=='을 사용해 보았습니다. 만약'string.Equals (string) '과 다르게 예외를 던지는 것이 잘못 되었다면 – Andrew
일반적인 예외를 잡는 것은 일반적으로 나쁜 습관입니다. 코드에서 스파 스 및 추적 할 수없는 동작으로 이어질 수 있습니다. 예외는 말할 것도없이 매우 비 효과적입니다. 변수가 null 일 수있는 경우 액세스하기 전에 null 값을 확인해야합니다. –