2014-02-08 5 views
-1

코드에서 catch-try를 사용한 후에이 오류가 발생합니다. try-catch를 내 코드에서 사용하지 않으면 편집기에서이 오류를 표시하지 않지만 try-catch 코드로 프로그램을 닫으면이 오류가 발생합니다. 내 코드는 다음과 같습니다.할당되지 않은 지역 변수 'month'사용

try 
{ 
    month = Int32.Parse(Console.ReadLine()); 
} 
catch (FormatException ee) 
{ 
    Console.WriteLine(ee.Message); 
} 
if (month > 12 || mnth < 0) 
{ 
    Console.Write("----Incorrect Month...plz Re-"); 
    lp_val = 1; 
} 
+0

오류가 나타내는대로 month를 mnth로 바꾸십시오. – dotTutorials

+3

'month'과'mnth' 변수가 다른가요? 아니면 타이핑을 놓쳤습니다. –

답변

1

문제점 :는 가변 mnth 선언하지만, 사용자 입력은 입력 파싱 함수로서 유효한 integre 예외 가변 mnth가 여전히 던진다 경우 it.so을 초기화하기 didnot 초기화되지 않았습니다.

솔루션 : 선언시 변수 mnth을 초기화하십시오.

이 시도 :

try 
{ 
    mnth=0; 
    mnth = Int32.Parse(Console.ReadLine()); 
} 
catch (FormatException ee) 
{ 
    Console.WriteLine(ee.Message); 
} 
if (mnth > 12 || mnth < 0) 
{ 
    Console.Write("----Incorrect Month...plz Re-"); 
    lp_val = 1; 
} 

또는

당신은 이동할 수있는 경우 try 블록 내부 블록.

try 
{ 
    mnth=0; 
    mnth = Int32.Parse(Console.ReadLine()); 
    if (mnth > 12 || mnth < 0) 
    { 
     Console.Write("----Incorrect Month...plz Re-"); 
     lp_val = 1; 
    } 
} 
catch (FormatException ee) 
{ 
    Console.WriteLine(ee.Message); 
} 
+0

감사의 말 @Sudhakar –

+0

@PirFahimShah : 당신은 환영합니다 :), 당신의 도움을 기쁘게 생각합니다. –

0

첫째을, 당신은 두 개의 변수, monthmnth 있습니다. 여기에 질문을 게시하여 작성한 경우이 오류가 발생한 것 같지만 그렇지 않은 경우 코드의 오타를 해결해야합니다.

예외가 Int32.Parse으로 발생하면 결과는 month으로 할당되지 않으므로 나중에 조건을 평가할 때 할당되지 않을 수 있습니다.

int month = 0; 

아니면 대신 try/catch에 포장의 Int32.TryParse를 사용 : 아파트

int month; 
if (!Int32.TryParse(Console.ReadLine(), out month)) 
{ 
    Console.WriteLine("Unable to parse input"); 
} 
0

을 사실 것과

용액을 상기 try 블록 외부의 변수를 초기화한다 try 블록 코드가 예외를 던지면 라인이 실행되지 않고 mnth가 어떤 값으로 초기화되지 않습니다.

0

month 변수를 선언했지만 초기화하지 않은 것 같습니다.

이 코드는 코드에서 같은 오류가 발생합니다.

int month; 
if(month < 12) 
{ 
    // 
} 

그래서 사용하기 전에 초기화해야합니다. 예를 들어 사용;

int month = 0; 

대신

int month; 
관련 문제