[问题] 例外(exception)处理的技巧或原则

楼主: icetofux   2020-09-08 23:28:38
其实这不是单纯python的问题,但python是我惯用的程式语言所以发在这里。
请问各位先进关于例外处理的"方法",有没有什么书、教学或是基本原则可
以推荐?
我目前看过的书对于例外处理都着重于语法上的说明,导致真的要用的时候
try要框多大、那些东西是该except的我没什么概念,另外很多人都说
exception可以分离错误处理跟商务逻辑,但我看书上的范例却没什么感觉,
好像只是另一种形式的if错误测试。到最后code里好像真的也没用到什么
try/except,问题都等到真正程式在执行的时候才会发现一个改一个。
另外因为except后程式会中断,导致我也不太敢用python做一些需要长时间
运行、稳定性高的程式。这都是源于我对于例外处理的认识不足导致,我想
要克服这个状况。
谢谢。
作者: remia81   2020-09-09 01:15:00
try except else finally组合起来用可以不中断
作者: keepingJBJ (keep)   2020-09-09 03:28:00
我的理解上if...else是程式处理对象或物件的逻辑,try
作者: Pieteacher (pieteacher)   2020-09-09 07:57:00
while 搭配 try except 跟 break continues
作者: TuCH (谬客)   2020-09-09 08:16:00
程式出错了不中断是要继续错下去吗
楼主: icetofux   2020-09-09 09:34:00
如果像是server这类的程式,当某次请求发生错误,比起直接中断,会不会忽略这个请求的后续动作,但继续服务其他的连线是比较好的选择@[email protected]
作者: TuCH (谬客)   2020-09-09 09:58:00
如果目的是要不中断 那就要最外层包一个try 去处理例外
作者: ddavid (谎言接线生)   2020-09-09 11:26:00
Server不中断也有其极限,最外圈硬包try其实不是好的作法,或者说也不是不行,但内部还是要对小部分把预想到的状况都各自处理掉,最外圈只接完全没设想到的状况当然在没设想到的状况发生时硬要Server继续跑下去也可能风险很大,需要评估取舍比如说硬盘满了,Server硬跑的结果可能就是后续使用者的操作全部无法纪录,这样硬跑结果最后还是全回溯是否有比较好
作者: alvinlin (林矜业)   2020-09-09 19:10:00
程式写多了就有感觉了。还有你写反了,有了except程式才不会中断。
作者: ddavid (谎言接线生)   2020-09-10 16:43:00
楼上说的是例外处理的一般论,但我一直觉得Python根本上的设计有不少成分在几近强迫使用者采取例外控制流程而非if不少套件根本性地不提供return value而只给exception来处理即便用if也很直觉合理的事情这时候就很容易发生到底是要依循能if就if的概念,接了他的exception后改用return往自己code的更上层传,还是保持一致性地就接个手做点必要处理后raise继续往上层这样的考虑空间
作者: alvinlin (林矜业)   2020-09-11 01:47:00
可能有吧,但又何妨。反正左手右手打到蚊子就是好手,两手一起也行。我自己是能用if尽量不用exception,但对电脑来说其实不是0就是1没差别。对套件来说,可能exception比较好外包吧。总之,能达到目的其实都好。

Links booklink

Contact Us: admin [ a t ] ucptt.com