Python #27 - Exceptions

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ธ.ค. 2024

ความคิดเห็น • 76

  • @mintendolp5313
    @mintendolp5313 7 ปีที่แล้ว +28

    Ich weiß diese Videos sind schon recht alt ... aber trotzdem Ultra geil. .. Danke dafür und weiter so :)

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว +5

      Das schöne an Tutorials: Die altern ganz anders. Wenn man bedenkt, dass Python 3 immer noch das neueste ist und oftmals sogar noch Python 2 genutzt wird:)
      Freut mich wenns dir gefallen hat

    • @denizstyx
      @denizstyx 2 ปีที่แล้ว

      ALT?! 4 Jahre später und ich finde diese Reihe genial und ausführlich, auch wenn ich manchmal nicht alles verstehe. Z.bsp habe ich die Tic Tac Toe Übung geskippt weil mir aufgefallen ist , dass ich hierfür noch nicht bereit bin.

    • @moritzmoritz1314
      @moritzmoritz1314 2 หลายเดือนก่อน

      @@denizstyx Es werden ja grundlegene Konzepte der Informatik erklärt. Glaube so schnell wird das nicht alt. Die Syntax ändert sich vielleicht ein bisschen, aber die Funktion, was die Programmiersprache macht, bleibt ja gleich. ChatGPT wird mich schon darauf hinweisen, was falsch ist das Syntax. Dafür reicht ChatGPT ja mehr als genug.

  • @heiligepommesbude9555
    @heiligepommesbude9555 3 ปีที่แล้ว +1

    Das war einfacher als Vererbung :-) except shitstorm: pass

  • @funnykira1330
    @funnykira1330 8 ปีที่แล้ว +4

    Weißt du obs da eine Liste gibt, in welcher die Python Exeptions auf deutsch erklärt werden?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว +1

      +AniYou ich rate mal nein, die meisten Dokus sind auf Englisch..

  • @sandorhegedues4924
    @sandorhegedues4924 3 ปีที่แล้ว +1

    Erstmal danke für die coole(kostenlose) Reihe.
    Wofür ist die classe exception oben?

  • @totento9150
    @totento9150 4 ปีที่แล้ว +1

    gibt es ne art Liste für Fehlermeldungen ?
    oder muss man sich das merken?

  • @Erbond12
    @Erbond12 5 ปีที่แล้ว +3

    Deine Videos sind echt nice zum lernen, aber ich hänge gerade ein wenig mit dem verständnis der Exception Klasse.
    Ich verstehe nämlich nicht ganz warum man jetzt die Oberklasse Exception in die klasse Ex weiter vererben muss.
    Das pass ist ja nur dafür da, dass man einfach wenn nichts in der Klasse ist die Attribute der Oberklasse übernimmt, aber was wirklich von Exception übernommen wird verstehe ich noch nicht ganz.
    Ist das eine Ansammlung an Fehlern? Aber müsste dann nicht der "got to catch them all" Fehler auftretten (also except Exception: ...)?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +1

      Du kannst quasi eigene Fehler erstellen,die du werfen kannst wann du willst. Zb stell dir bei einem game wie minecraft vor du hast einen objectbroken Fehler, der geworfen wird, wenn das Werkzeug kaputt ist und einen blockgone Fehler, wenn der Block schon abgebaut wurde. Je nachdem welcher Fehler auftritt, kann die fangende Funktion anders - besser - reagieren. Du möchtest ja nicht, dass das ganze abschmiert. Das kannst du mit 2 verschiedenen except Blöcken machen

    • @Erbond12
      @Erbond12 5 ปีที่แล้ว

      @@TheMorpheusTutorials Danke dir auch hier nochmal für deine Antwort.
      Aber ich habe noch nicht ganz verstanden, wie man die das genau nutzen kann.
      Wir haben im video eine Klasse erstellt, die als Fehlerklasse interpretiert werden kann, aber das bringt mir ja nichts, wenn die Klasse lehr ist, oder übersehe ich da was?
      könntest du noch mal erklären, was genau die Klasse Exception und die beiden Funktionen pass und raise tun/ sind?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว

      Doch, allein der Name bringt dir was in diesem Fall 🙂
      Sagen wir, in deinem Code geht es schief und du wirst eine exception a. In der selben Funktion kann aber auch exception b geworfen werden, wenn was anderes schief geht. Die aufrufende Funktion kann jetzt 2 verschiedene Fälle auffangen und unterschiedlich behandeln, je nach dem welche exception fliegt

  • @redcraft7657
    @redcraft7657 3 ปีที่แล้ว +1

    Ich checke eigentlich alles bis auf das mit diesen Exeptions Klassen. Für was braucht man die?

  • @1marius16
    @1marius16 4 ปีที่แล้ว +2

    Ich hab nicht ganz verstanden, warum man am Anfang ne Klasse macht, die von Exception erbt.
    Kann mir das nochmal jemand erklären?

    • @Leonardo-eu7jt
      @Leonardo-eu7jt 3 ปีที่แล้ว +1

      Damit du Methoden in der Klasse definieren kannst.

  • @ralphfest.pusteblume9530
    @ralphfest.pusteblume9530 5 ปีที่แล้ว +1

    Worin besteht der Unterschied ob "except Exception:" oder nur "except:" mit jeweils folgenden Befehlen innerhalb der Exception verwende? Beides füht mir die z.B. print Befehle innerhalb der Excepton aus.
    Als Bsp:
    except:
    print ("Folgender Fehler ist aufgetreten:", sys.exc_info()[0])
    als auch
    except Exception:
    print ("Folgender Fehler ist aufgetreten:", sys.exc_info()[0])
    liefert dieselbe Ausgabe mit nicht gecatchter Exceptionart.
    danke Dir!

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว

      Exception ist das allgemeinste. Du kannst noch spezifischer werden, welche exception du fangen möchtest. Wenn du nur allgemein alles fangen willst, reicht except

  • @jemand1685
    @jemand1685 6 ปีที่แล้ว +2

    Was ist ein raise und was ist ein RunTimeError und was ist jetzt in der Klasse Exeption?
    Also du hättest noch erklären können warum wir jetzt Exeption vererben (was in der Exception drin steht) und was die Errors sind aber ansonsten danke!

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว +2

      Raise wirft einen Fehler. RunTimeErrors auf Fehler die zur Laufzeit auftreten (Sorry 4 obvious) und durch die Vererbung erstellst du dir eine eigene Fehler klasse, die du werfen kannst

    • @jemand1685
      @jemand1685 6 ปีที่แล้ว

      Ahh danke mach weiter so

  • @DirkJes77
    @DirkJes77 8 ปีที่แล้ว +3

    Gibt es eine Möglichkeit, die Zeilennummer des Fehlers abzugreifen/auszugeben?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  8 ปีที่แล้ว +7

      import sys, os
      try:
      raise NotImplementedError("No Probs")
      except Exception as e:
      exc_type, exc_obj, exc_tb = sys.exc_info()
      fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
      print(exc_type, fname, exc_tb.tb_lineno)liefern dir zusätzliche Infos, unter anderem auch die LineNumber =)

    • @DirkJes77
      @DirkJes77 8 ปีที่แล้ว +1

      +The Morpheus Tutorials Danke für die flinke Antwort. 👍

  • @playhardtotame1122
    @playhardtotame1122 5 ปีที่แล้ว +1

    Habe eine Frage und zwar ich kann mein oserror nicht mit expaction "retten" der Fehler wird trotzdem angezeigt, geht das nicht mit is errors oder ist was anderes los?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +1

      Doch, das geht mit allen errors, aber es heißt except , nicht expaction

  • @billyhilly8129
    @billyhilly8129 7 ปีที่แล้ว

    Hi wieder mal ;D
    Deine eigene Klasse Ex erbt Exception. Müsste diese nicht jetzt alle Exceptions abfangen können?
    Dein letzter except-Aufruf (Minute 7:51) ist doch auch die Oberklasse Exception und fängt alles auf was noch durchsickert. Warum passiert das nicht schon im ersten except-Aufruf wo du deine Ex() fängst?
    thx

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      catch Ex fängt wirklich nur alle Instanzen von GENAU der Klasse Ex. Also alles was drüber ist (Exception) oder alle anderen Exceptions werden ignoriert, außer die Unterklassen von Ex. Von denen gibt's hier aber tatsächlich gar keine.

  • @marcojahn2564
    @marcojahn2564 ปีที่แล้ว

    Wenn ich das richtig sehe, scheint der Try-Block aber immer nur einen Befehl abzuarbeiten,oder ? Sprich: wenn ich da die foo-Funktion 2x nacheinander reinschreibe, wird der 2.Durchlauf gar nicht erst gestartet, wenn der 1.Durchlauf schon eine Exception geworfen hat.

  • @easypy
    @easypy 2 ปีที่แล้ว +1

    Exceptions sind empfehlenswert wenn der Fehler den Programmablauf nicht beeinflussen sollten . Ansonsten situationsbedingt:)

  • @maxbart1353
    @maxbart1353 4 ปีที่แล้ว

    wie gut müsste man sein um einen Job als Programmierer zu finden? und was wäre ein möglicher Weg so ganz ohne Abschluss? ich denke eine Anstellung ist so schwierig (außer man ist sehr gut, was ich nicht bin).es Irgendwie als Freelancer versuchen?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  4 ปีที่แล้ว

      Hmm, ohne Ausbildung oder Studium brauchst du halt eigene Referenzen um zu zeigen, was du kannst. Dann geht das schon

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  4 ปีที่แล้ว

      Wenn du magst, schreib mir mal auf discord oder Email, vielleicht können wir da was machen

    • @maxbart1353
      @maxbart1353 4 ปีที่แล้ว

      das ist
      noch ein langer weg, also mal sehen. und danke

  • @warumdenn5179
    @warumdenn5179 6 ปีที่แล้ว +5

    braucht man des oft? (bitte sag nein xD )

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว +3

      nein :D

    • @marcojahn2564
      @marcojahn2564 ปีที่แล้ว

      Selbst zusammengeschusterte Exceptions ? Eher nicht. Dass man die "werksmäßig mitgelieferten" Exceptions abfangen muss, kommt da schon eher vor. Im Optimalfall sollte man seinen Code aber schon so schreiben, dass es gar nicht erst zu Fehlern kommen kann. Etwa indem man gleich bei der Eingabe von Werten durch den User eine Plausibilitätsprüfung mit einbaut, ob bei der erwarteten Eingabe einer Ziffer tatsächlich eine Ziffer eingegeben wurde.

  • @PProgress
    @PProgress 4 ปีที่แล้ว

    Was bedeutet dieses "raise"?

    • @LB-qr7nv
      @LB-qr7nv 3 ปีที่แล้ว

      Das erzeugt einfach einen Fehler, der das Programm zum Absturz bringt und einen Fehler deiner Wahl ausgibt

  • @Kig_Ama
    @Kig_Ama 4 ปีที่แล้ว

    Was ist dieses raise nochmal, das habe ich nicht kapiert.

    • @marcojahn2564
      @marcojahn2564 ปีที่แล้ว

      Das ist quasi der Befehl, damit Python ganz absichtlich eine Exception wirft.

  • @waldmeisterexperte
    @waldmeisterexperte 6 ปีที่แล้ว +1

    Einfach am Anfang des Programms immer try: und am Ende Except Exception: und man hat sein ganzes Leben lang nie wieder Fehlermeldungen, und damit muss man dann krass angeben :D

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      ja, ist aber auch nicht unbedingt sinnvoll. Das Programm funktioniert ja trotzdem nicht :D

    • @waldmeisterexperte
      @waldmeisterexperte 6 ปีที่แล้ว +1

      The Morpheus Tutorials Es geht nur ums Angeben beim Programmieren :D

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      :D

  • @darren32thereal
    @darren32thereal 6 ปีที่แล้ว

    kann man sich damit seine eigenen Error Definitionen schreiben damit es noobfreundlicher wird ?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      Klar, du kannst mit throw eigene Exceptions werfen, das sind alle die, die von Exception erben

  • @Sk8AndDestr0y
    @Sk8AndDestr0y 7 ปีที่แล้ว

    RuntimeError wird nicht erkannt wenn man ecxept Exceptions: verwendet... weiß jemand warum?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      except.. nicht ecxept

    • @Sk8AndDestr0y
      @Sk8AndDestr0y 7 ปีที่แล้ว

      richtig, aber daran liegts nicht war nur ein tippfehler.. er nimmt einfach lieber die Nachricht von Exceptions als die von RuntimeError

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 ปีที่แล้ว

      achso, jetzt hab ichs gefunden :D
      Und zwar musst du entweder except: schreiben oder aber except FEHLERKLASSE: wobei Fehlerklasse wirklich die Klasse des Fehlers sein muss, also zB ValueError oder so. Die Klasse "Exceptions" gibts nicht

  • @jerry7913
    @jerry7913 4 ปีที่แล้ว +3

    also irgend wie hast du deine TicTacToe Übung zu früh gemacht ;)

    • @1marius16
      @1marius16 4 ปีที่แล้ว

      Hä ich hab die gar nicht gebraucht...
      Höchstens für ValueError und das hat er glaub vorher schon erklärt.
      Oder was meinst du?

  • @janz.7994
    @janz.7994 8 ปีที่แล้ว

    except ist also bischen wie catch in c# ?

  • @ubiquitousjoke5526
    @ubiquitousjoke5526 6 ปีที่แล้ว

    was ist mit finally?

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      Hab ich untern Tisch geschlagen, gibt es aber

    • @ubiquitousjoke5526
      @ubiquitousjoke5526 6 ปีที่แล้ว +1

      Eine Antwort schneller als die polizei erlaubt, aber ok, halte finally eh irgendwie für unnötig

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว

      9 Stunden ist doch nicht schnell :D Das hier ist schnell^^

    • @ubiquitousjoke5526
      @ubiquitousjoke5526 6 ปีที่แล้ว

      xD und noch dazu zu so nem alten video, good job

  • @Juliana-mo7ef
    @Juliana-mo7ef 6 ปีที่แล้ว +3

    Das Totourial ist zwar schon sehr alt aber : ich versteh dieses Video irgendwie nicht D:

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว +2

      Wenn du mir ne genauere Frage stellst, kann ich dir sicher helfen :D
      Das Alter macht rein gar nix, funktioniert immer noch alles genau gleich ;)

    • @Juliana-mo7ef
      @Juliana-mo7ef 6 ปีที่แล้ว +1

      Danke für die schnelle Antwort, ich schreib einfach mal das was ich verstehe den Rest nicht;Ich verstehe: try und except(aber nicht was danach steht) mir fällt gerade auf das dass iegendwie alles ist D: und : Natürlich verstehe ich die Klasse

    • @Juliana-mo7ef
      @Juliana-mo7ef 6 ปีที่แล้ว +1

      Und danke für die Totourials die sind echt gut 👍

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  6 ปีที่แล้ว +9

      Okay, also im Code können Fehler passieren. Beispielsweise versuchst du auf ner Zahl zahl den Befehl zahl[0] aufzurufen. Das wirft nen Fehler. Das kannst du auch von Hand machen mit raise Exception(), was sinnvoll ist, wenn du ne Klasse schreibst, die jemand anders nutzt und du möchtest ihm zeigen, dass da was schief gehen kann.
      Von Exception kannst du auch erben, damit die Fehlermeldungen vielleicht etwas aussagekräftiger werden, daher class Ex(Exception).
      Du kannst mit einem try: Block Code ausführen und wenn da ne Exception kommt, stürzt dann nicht gleich dein ganzes Programm ab, sondern du landest nur im except Block.
      hier musst du erstmal angeben, welche Fehlermeldungen du überhaupt erwarten willst. Das machst du mit except Ex():
      damit sagst du "ich erwarte nen Ex-Fehler. Wenn der kommt wird der Code unter except ausgeführt.
      Und ich glaube das wars auch schon^^

    • @Juliana-mo7ef
      @Juliana-mo7ef 6 ปีที่แล้ว +3

      The Morpheus Tutorials Vielen Dank das du dir so eine Mühe für deine Zuschauer gibst😀Endlich versteh ich es!Danke :D Entschuldigung mir fällt gerade auf das es Tutorial heisst xD

  • @mundron5290
    @mundron5290 5 ปีที่แล้ว

    Sehr gutes Video, aber irgendwie hab ich nicht begriffen was das pass macht.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  5 ปีที่แล้ว +2

      Es macht einfach gar nichts :D Man muss in Python eine Zeile Code nach einem Doppelpunkt haben, aber wenn man keine möchte, nimmt man pass

    • @mundron5290
      @mundron5290 5 ปีที่แล้ว

      Ach so! Also steht pass fuer eine leere Klasse/Methode. Richtig? Dann kann deine Klasse Ex durch die Vererbung genau das selbe wie Exception und kann somit als Kopie mit anderem Namen betrachtet werden. Ok. Danke!