다음 코드를 감안할 때?중첩 excpetion 변수 이름
답변
아니요, 괜찮을 것입니다. 그것들은 전적으로 독립 변수입니다. 적어도 C#의 경우입니다. VB에서 확실하게 말할 수는 없지만, 코드를 읽을 때 잠재적 인 혼란을 초월하는 부작용이 있다면 정말 놀랍습니다.
특히, 두 변수는 다른 범위를 가지지 않습니다. 둘 중 하나도 이 아니고 실제로는이 다른 블록을 선언 할 때 중첩 된 것입니다. "내부"가 바깥 쪽 시도 블록 블록 내에서 선언됩니다. catch 블록 내에서 try/catch 블록 을 작성한 경우 중첩 된 catch 블록은 동일한 변수 이름을 재사용 할 수 없습니다.
VB에서는 대답 할 수 없습니다.
C# 사양 (§8.10)에 따르면 예외 변수는 범위가 catch 블록으로 확장되는 로컬 변수입니다.
즉,이 변수에 동일한 이름을 별도의 catch 블록에 사용하는 데 문제가 없음을 의미합니다. 첫 번째 catch 블록이 WriteMyDataToDB(MyData)
에서 발생 SQLException이를 잡을 동안
static void Main(string[] args)
{
try
{
bool success = true;
MyData myData = ReadMyDataFromFile();
try
{
WriteMyDataToDB(myData);
}
catch (SqlException ex)
{
Console.WriteLine("An error occured saving the data.\n" + ex.Message);
success = false;
}
WriteLogFile(myData, success);
}
catch (IOException ex)
{
Console.WriteLine("An error occured reading the data or writing the log file.\n" + ex.Message);
}
}
가, 두 번째 catch 블록이 과정을 통해 발생하는 모든 IOException가 잡을 것, 그리고 사실이 : 이건 그냥 잘 작동합니다 catch 변수는 동일한 이름을 가지므로 아무런 차이가 없습니다.
다른 catch 블록 내에 try-catch가있는 경우 (매우 비정상적인 경우) 동일한 이름을 다시 사용하는 문제가 발생합니다.
:A local variable named 'ex' cannot be declared in this scope because it would give a different meaning to 'ex', which is already used in a 'parent or current' scope to denote something else
static void Main(string[] args)
{
try
{
DoStuff();
}
catch (IOException ex)
{
try
{
Console.WriteLine("IOException" + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("Another exception!" + ex.Message);
}
}
}
다음과 같은 오류를 줄 것이다
- 1. 중첩 된 변수 이름 단축
- 2. 이중 중첩 EL 변수?
- 3. 치타의 변수 중첩 템플릿
- 4. 스칼라 클래스 변수 이름 숨기기 메서드 매개 변수 이름
- 5. 변수 내부의 함수 이름
- 6. 파이썬 변수 메소드 이름
- 7. 프롤로그 변수 이름 예컨대
- 8. 긴 변수 이름
- 9. 로컬 변수 이름 얻기
- 10. 테이블의 변수 이름 만들기
- 11. 이상한 변수 이름
- 12. Matlab : 구조체의 변수 이름
- 13. 사용 변수 이름
- 14. AS2의 변수 이름 #
- 15. CString 변수 이름 접두사
- 16. XMLHttpRequest에서 변수 이름 사용
- 17. 부울 변수 이름 제안
- 18. 변수 이름 길이 줄이기
- 19. C++ 변수 이름 지정
- 20. 변수 이름으로 인스턴스 이름
- 21. 파이썬의 동적 변수 이름
- 22. 액세스 stdClass 변수 이름
- 23. 잘못된 매개 변수 이름
- 24. 동적 변수 이름
- 25. Monorail Excpetion, "주어진 키가 사전에 없습니다."
- 26. 중첩 메이븐 매크로 변수 문제
- 27. 중첩 루프 질문에서 변수 할당
- 28. 중첩 루프 변수가있는 변수 주위에 중첩 파운드 기호
- 29. PHP - 함수/변수 이름 지정
- 30. sqlite에서 변수 열 이름 시뮬레이션