Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Catching exception if file is not available anymore #43

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

AndresRohr
Copy link

No description provided.

@dhwz
Copy link
Member

dhwz commented Sep 17, 2023

Ich bin kein Freund von try except
Das lässt sich doch sicher auch mit os.path.exists() abfangen.

@AndresRohr
Copy link
Author

AndresRohr commented Sep 17, 2023

Richtig, Exceptions sind nur für Ausnahmefälle gedacht. Beim einem normalen kompletten Lauf einer App/Plugins sollte eigentlich nicht eine einzige auftreten. Aber zwei Punkte sind zu beachten:

  • Es kann auch andere Ursachen geben, dass der Dateistatus nicht abgefragt werden kann (Netzwerk getrennt zB., Filesystem-Korruption, kein Memory mehr oä.)
  • Concurrency: Zwar äusserst selten, aber zwischen die Abfrage exists() und dem stat könnte eine Löschung stattfinden. Komischerweise ist ein Dreambox-Plugin nicht abgesichert und damit gibts dann einen Greenscreen (hatte ich, darum die Anpassung). Eigentlich sollte Plugin-Code als ganzes mit Try-Catch abgesichert sein, damit nicht gleich die ganze Box den Rückenschwumm macht, sondern nur das Plugin beendet wird. Habe dafür aber zuwenig Wissen bei newnigma.

@drecomx
Copy link
Contributor

drecomx commented Sep 18, 2023

Ich seh das gleich wie dhwz. Try/except sollte so wenig wie möglich verwendet werden. Grad bei Dateisystemzugriffen gibt es durchaus bessere Optionen. Und die von dhwz vorgeschlagene Option ist definitiv besser.

Ich habe den Code grad nicht mehr in Erinnerung, aber das müsste in der buildFunc sein. Entsprechend muss während des Listenaufbaus die Verbindung verloren gehen. Eine Löschung müsste über einen anderen Weg durch eine andere Person erfolgen, sonst ist man dann doch selber schuld

@AndresRohr
Copy link
Author

Die Löschung kann jederzeit erfolgen, da die Box ja per Samba mit externen Computern verbunden sein kann. Bei meinem GreenScreen war es meine PC-Software 'Atlas Subtitler'. Die kann zum Managen der Untertitel verwendet werden. Man fügt einfach am Beginn des Videonamens ein Zweibuchstabenkürzel ein. Subtitler kann dann von aussen bestimmte Funktionen ausführen, und die bewirken oft eine Umbenennung.

Man sollte in der Informatik nicht allzu dogmatisch sein. Wichtiger ist, dass die Vorteile in der Praxis gegenüber den Nachteilen abgewogen werden:

  • Vorteil: Keine Möglichkeit für einen GreenScreen, also auch keine Verärgerung von Dreambox-Benutzern. Keinen unnötigen Zeitaufwand für die Analyse eingesendeter crash-logs.
  • Nachteil: Eine wohl unmerkliche Verlangsamung durch try, eine umerkliche Verschnellerung durch das Nicht-Doppelte-Nachschauen im Directory. In meiner dm900 merke ich keinen Unterschied. Bei den Verzeichnissen ist übrigens schon per try-except abgesichert.

@mtdcr
Copy link
Member

mtdcr commented Sep 18, 2023

Ich fänd's allgemein sinnvoll, den try-except-Block jeweils so klein wie möglich zu halten und die Fehlerursache mit auszugeben, damit (ohne Greenscreen) nachvollziehbar bleibt, wo und weshalb ein Fehler aufgetreten ist.

Man muss es aber auch an der Stelle nicht over-engineeren. So ist es schon eine Verbesserung im Vergleich zum vorherigen Zustand.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants