She*_*jie 9 python exception-handling
sys.exit()在Python中调用和抛出异常有什么区别?
假设我有一个Python脚本,它执行以下操作:
如果文件不存在或者IOException在运行时被抛出,下面的哪个选项更有意义?
except IOException块中,退出并显示错误消息,例如sys.exit("something is wrong")选项3是否会终止进程,而1和2则不会?考虑到Python没有像Java那样的检查异常(我真的是Java开发人员^ _ ^),处理Python异常的最佳方法是什么?
Voo*_*Voo 16
sys.exit提出了SystemExit自己所以从纯技术角度有自己养的是异常或使用之间没有什么区别sys.exit.是的,你可以SystemExit像任何其他异常一样捕获异常并忽略它.
所以这只是一个更好地记录你的意图的问题.
PS:请注意,这也意味着sys.exit实际上是一个非常糟糕的用词 - 因为如果你sys.exit在一个线程中使用只有线程被终止而没有别的.那可能很烦人,是的.
有一个微小而微妙的区别:
import sys
try:
sys.exit()
except:
print("Caught")
Run Code Online (Sandbox Code Playgroud)
该except语句捕获异常,而:
import sys
try:
sys.exit()
except Exception:
print("Caught")
Run Code Online (Sandbox Code Playgroud)
退出没有错误。SystemExit异常(如KeyboardInterrupt)不是被 捕获except Exception,而是被except单独捕获。
因此,如果调用者捕获了所有内容except:(这是不好的做法),您sys.exit将不会退出,但会被视为“错误”。这就是为什么except Exception:最好确保捕获除 CTRL+C 和系统退出(属于BaseException此类)之外的所有异常。
| 归档时间: |
|
| 查看次数: |
3752 次 |
| 最近记录: |