python - 为什么这段代码没有异常抛出?
天蓬老师
天蓬老师 2017-04-18 10:28:05
0
2
459
In [8]: def bar():
   ...:     a = 10
   ...:     try:
   ...:         raise
   ...:     except:
   ...:         try:
   ...:             raise
   ...:         except:
   ...:             raise
   ...:     finally:
   ...:         return a


In [9]: bar()
Out[9]: 10
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(2)
Peter_Zhu

매우 흥미롭습니다. 먼저 몇 가지 코드를 실행해 보겠습니다

1. 이 코드는 try의 레이어 수에 대해 걱정할 필요가 없다는 것을 의미합니다. 실제로는 예외가 발생하지 않는 이유만 알아내면 됩니다.
으아악
2. 이 코드는 return 문이 있으면 예외가 발생하지 않는다는 의미입니다.
으아악
3. 드디어 파이썬을 이해하기 위해 이 글을 보고 확인했습니다.

f()가 예외를 던진 후, Except에서 return을 실행하는 것 같지만 호출자에게 반환되지 않고 finally에서 코드 실행을 "지속"합니다. 이 시점에서 나는 마침내 finally의 진정한 의미를 이해하게 되었습니다. 즉, 반환이 이루어지더라도 finally의 코드는 여전히 실행되어야 한다는 것입니다.

여기서도 try에 종료 메소드가 필요한 명령문이 있으면 finally 실행을 시도한다는 점을 이해할 수 있습니다. finally에 리턴 메소드가 있으면 즉시 리턴하고 이전 종료 명령문은 실행되지 않습니다.
이때 이 코드 문자열을 살펴볼 수 있습니다

으아악
4. 이제 드디어 좀 더 확실해지셨나요~

지금 배워서 판매하세요. 틀린 부분이 있으면 지적해주세요~

左手右手慢动作

마지막에 예외가 발생하면 Except 문이 헛된 것이 아닌가?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!