catch를 시도해보십시오.
나는 수년 동안 많은 언어에서 try-catch / except-finally 변형을 가지고 왔는데, 오늘 누군가가 어떤 것이 무엇인지 물이 대답 할 수 없습니다.
기본적으로 전체 try-catch 블록 내부는 대신 마지막으로 문장을 넣는 이유는 무엇입니까? 즉, 다음 코드 블록간에 차이가 있습니다.
try{ //a}
catch {//b}
finally {//c}
try{//a}
catch{//b}
//c
편집 :
사람들, 나는 마침내 무엇을하는지 알고 있습니다. 나는 그것을 좋아했던 것이 왔지만 위의 예에서 내 질문은 //c
마침내 발표되는 것입니다.
finally
블록 의 목적은 "catch"블록만으로는 매우 깔끔하게 처리되지 않는 세 가지 상황에서 코드가 실행되는 것입니다.
- `try` 블록 내의 코드가`return`을 통해 종료되는 경우
- catch 블록 내의 코드가 catch 된 예외를 다시 던지거나 우연히 또는 의도적으로 새 예외를 던지는 경우.
- `try` 블록 내의 코드에서 캐치가없는 경우가 있습니다.
finally
매번는 return
던져 또는 전에 코드를 복사하고 catch
, 실수로 예외가 발생할 가능성을 허용 하기 위해 자체 시도 / 캐치 블록을 내에 래핑 할 수 있지만, 것을 무시하고 모든 단순히 finally
블록을 사용하는 것이 훨씬 쉽습니다 .
BTW, 디자이너가 포함 언어하기를 바라는 한 가지는 예외 후 정리해야 우리하지만 여전히 호출 스택에 침투하기를 원하는 경우를 처리 exception
하기 위해 finally
블록에 , 대한 인수입니다 (예 : 코드를 래핑 할 수 있음). 그런 구조의 생성자 및 생성자는 Dispose
예외와 함께 종료되는 경우 생성됩니다).
마지막으로 try 블록에서 예외가 발생하더라도 블록이 실행됩니다. 따라서 예를 들어 이전에 스트림을 연 경우 예외가 발생했는지 여부에 관계없이 해당 스트림을 닫고 싶을 수 있습니다. 마지막으로 블록은 이러한 문제에 유용합니다.
Finally
예외가 발생하더라도 코드가 실행 확인하십시오.
마지막으로 블록은 블록에 할당 된 리소스를 정리하고 예외가 있어도 실행해야하는 코드를 실행하는 데 필요합니다.
http://msdn.microsoft.com/en-us/library/zwc8s4fz(v=vs.80).aspx
'ProgramingTip' 카테고리의 다른 글
bash를 호출하고 새 셸 내에서 명령을 실행 한 다음 사용자에게 제어권을 다시 제공하는 방법은 무엇입니까? (0) | 2020.11.18 |
---|---|
C ++ 람다 식의 수명은 얼마입니까? (0) | 2020.11.18 |
grep 명령 결과를 쉘의 일부 변수에 저장하는 방법 (0) | 2020.11.18 |
Angular2의 (keyup) 옵션은 무엇입니까? (0) | 2020.11.18 |
HTTP POST / GET 요청에 대해 ASP.NET ASMX 웹 서비스 활성화 (0) | 2020.11.18 |