c# 예외처리 예제

0 0

다음 예제에서는 finally 블록이 try 블록에서 열리는 파일을 닫는 데 사용됩니다. 파일을 닫기 전에 파일 핸들의 상태를 검사합니다. try 블록이 파일을 열 수 없는 경우에도 파일 핸들에는 여전히 null 값이 있고 finally 블록은 파일을 닫으려고 시도하지 않습니다. 또는 try 블록에서 파일이 성공적으로 열리면 finally 블록이 열린 파일을 닫습니다. C#의 예외 처리는 런타임 오류를 처리하는 프로세스입니다. 런타임 오류 후에도 응용 프로그램의 정상적인 흐름을 유지할 수 있도록 예외 처리를 수행합니다. 위의 예제는 지정된 이름에 대해 적어도 한 명의 학생이 있는 경우 정상적으로 작동하며, 그렇지 않으면 NullReferenceException이 발생합니다. 사용자에게 예외 메시지를 표시하고 실행을 중지하지 않으려고 합니다. 따라서 아래와 같이 try catch 블록을 사용하여 예외를 처리해야합니다.

catch 블록에서 outStream을 닫을 수 있지만 알고리즘이 예외없이 성공적으로 실행되면 어떻게됩니까? 성공하면 파일이 닫히지 않습니다. 다행히도, 우리는 항상 실행됩니다 목록 15-2에 마지막으로 블록을 포함했습니다. try 블록의 알고리즘이 예외를 발생시키는지 여부에 관계없이 컨트롤이 메서드를 떠나기 전에 finally 블록의 코드가 실행됩니다. 오류 처리에 관해서 새로운 가장 친한 친구를 소개하겠습니다: try.. 캐치 블록. 지금 프로그램을 실행해 보고 그 차이를 확인해 보세요 – Visual Studio/Windows에서 심각한 문제가 발생했다고 말하는 대신, 우리는 우리 자신의 이야기를 들려줍니다. 그러나 무엇이 잘못되었는지 알 수 있다면 좋지 않을까요? 문제 없음 : C #는 중첩 된 시도 캐치 블록을 허용합니다. 중첩된 try catch 블록에서 예외가 발생한 try 블록 다음에 오는 catch 블록에서 예외가 catch됩니다. finally 블록은 필요하지 않으며 catch 블록 다음에 코드를 넣으면 어떻게 되는지 물어볼 수 있습니다. 정상적인 상황에서 예외가 Catch되면 catch 다음의 모든 코드가 실행됩니다.

그러나, 시도/캐치/마지막으로 예외적인 상황에 대 한 이며 그것은 당신의 프로그램을 더 강력한 만들기 위해 최악의 계획 하는 것이 좋습니다.