ProgramingTip

catch를 시도해보십시오.

bestdevel 2020. 11. 18. 09:31
반응형

catch를 시도해보십시오.


나는 수년 동안 많은 언어에서 try-catch / except-finally 변형을 가지고 왔는데, 오늘 누군가가 어떤 것이 무엇인지 물이 대답 할 수 없습니다.

기본적으로 전체 try-catch 블록 내부는 대신 마지막으로 문장을 넣는 이유는 무엇입니까? 즉, 다음 코드 블록간에 차이가 있습니다.

try{ //a}
catch {//b}
finally {//c}


try{//a}
catch{//b}
//c

편집 :
사람들, 나는 마침내 무엇을하는지 알고 있습니다. 나는 그것을 좋아했던 것이 왔지만 위의 예에서 내 질문은 //c마침내 발표되는 것입니다.


finally블록 의 목적은 "catch"블록만으로는 매우 깔끔하게 처리되지 않는 세 가지 상황에서 코드가 실행되는 것입니다.

  1. `try` 블록 내의 코드가`return`을 통해 종료되는 경우
  2. catch 블록 내의 코드가 catch 된 예외를 다시 던지거나 우연히 또는 의도적으로 새 예외를 던지는 경우.
  3. `try` 블록 내의 코드에서 캐치가없는 경우가 있습니다.

finally매번는 return던져 또는 전에 코드를 복사하고 catch, 실수로 예외가 발생할 가능성을 허용 하기 위해 자체 시도 / 캐치 블록을 내에 래핑 할 수 있지만, 것을 무시하고 모든 단순히 finally블록을 사용하는 것이 훨씬 쉽습니다 .

BTW, 디자이너가 포함 언어하기를 바라는 한 가지는 예외 후 정리해야 우리하지만 여전히 호출 스택에 침투하기를 원하는 경우를 처리 exception하기 위해 finally블록에 , 대한 인수입니다 (예 : 코드를 래핑 할 수 있음). 그런 구조의 생성자 및 생성자는 Dispose예외와 함께 종료되는 경우 생성됩니다).


마지막으로 try 블록에서 예외가 발생하더라도 블록이 실행됩니다. 따라서 예를 들어 이전에 스트림을 연 경우 예외가 발생했는지 여부에 관계없이 해당 스트림을 닫고 싶을 수 있습니다. 마지막으로 블록은 이러한 문제에 유용합니다.


Finally 예외가 발생하더라도 코드가 실행 확인하십시오.

마지막으로 블록은 블록에 할당 된 리소스를 정리하고 예외가 있어도 실행해야하는 코드를 실행하는 데 필요합니다.

http://msdn.microsoft.com/en-us/library/zwc8s4fz(v=vs.80).aspx

참고 URL : https://stackoverflow.com/questions/9687849/what-is-the-point-of-finally-in-a-try-catch-except-finally-statement

반응형