Eğer (özel) yakalanmış bir istisnayı yeniden yükseltebilir ve aynı denemenin dışında bir daha (genel) tarafından yakalanabileceğini merak ediyordum. Örnek olarak, belirli bir IOError ile bir şey yapmak istiyorum, ancak beklenen IOError değilse, istisna başka bir hata gibi ele alınmalıdır. Başlangıçta çalıştı Ne:Python 'hariç' fall-through
try:
raise IOError()
except IOError as ioerr:
if ioerr.errno == errno.ENOENT:
# do something with the expected err
else:
# continue with the try-except - should be handled like any other error
raise
except Exception as ex:
# general error handling code
Ancak bu işe yaramazsa: zam denemede-haricinde bağlamı dışında istisna yeniden yükseltir. İstenilen istisna 'düşme' davranışı için bunu yazmanın pythonik yolu ne olurdu?
(farkında olduğunu ediyorum önerilen bir bu çözdük olabilecek şekilde, bu uygulamaya konmadı 'hariç şartlı') Ben pythonically yazılı uzman değilim, ama bir bariz bir yaklaşım düşünüyorum
Bu nedenle, 'Exception' bloğu dışında 'IOError' bloğundan 'exception' bloğundan çıkmak isteyebilirsiniz? Bu mümkün olmadığını bildiğim kadarıyla, sadece bir 'except' bloğu (veya 'else' bloğu) verilen bir' try' için çalışır. Her şeyi başka bir şeyle sarmayı başarabilirdiniz, yani 'İstisna hariç' içini kaldırarak, yani bütünüyle ele alınacak olan 'IOError' kelimesi dışardan 'try''s 'except's. – jonrsharpe
Yapmak istediğim şey bu, ve tek istisnanın mümkün olabileceği konusunda endişeliydim. İç içe geçmiş/kod çoğaltma gibi bir şey daha zarif bir çözüm umuyoruz – OverlordAlex