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
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.
@@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.
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: ...)?
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
@@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?
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
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!
Exception ist das allgemeinste. Du kannst noch spezifischer werden, welche exception du fangen möchtest. Wenn du nur allgemein alles fangen willst, reicht except
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!
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
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 =)
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?
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
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.
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.
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?
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.
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
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
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
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^^
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
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!
Ich weiß diese Videos sind schon recht alt ... aber trotzdem Ultra geil. .. Danke dafür und weiter so :)
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
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.
@@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.
Das war einfacher als Vererbung :-) except shitstorm: pass
Weißt du obs da eine Liste gibt, in welcher die Python Exeptions auf deutsch erklärt werden?
+AniYou ich rate mal nein, die meisten Dokus sind auf Englisch..
Erstmal danke für die coole(kostenlose) Reihe.
Wofür ist die classe exception oben?
gibt es ne art Liste für Fehlermeldungen ?
oder muss man sich das merken?
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: ...)?
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
@@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?
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
Ich checke eigentlich alles bis auf das mit diesen Exeptions Klassen. Für was braucht man die?
Ich hab nicht ganz verstanden, warum man am Anfang ne Klasse macht, die von Exception erbt.
Kann mir das nochmal jemand erklären?
Damit du Methoden in der Klasse definieren kannst.
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!
Exception ist das allgemeinste. Du kannst noch spezifischer werden, welche exception du fangen möchtest. Wenn du nur allgemein alles fangen willst, reicht except
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!
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
Ahh danke mach weiter so
Gibt es eine Möglichkeit, die Zeilennummer des Fehlers abzugreifen/auszugeben?
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 =)
+The Morpheus Tutorials Danke für die flinke Antwort. 👍
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?
Doch, das geht mit allen errors, aber es heißt except , nicht expaction
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
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.
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.
Exceptions sind empfehlenswert wenn der Fehler den Programmablauf nicht beeinflussen sollten . Ansonsten situationsbedingt:)
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?
Hmm, ohne Ausbildung oder Studium brauchst du halt eigene Referenzen um zu zeigen, was du kannst. Dann geht das schon
Wenn du magst, schreib mir mal auf discord oder Email, vielleicht können wir da was machen
das ist
noch ein langer weg, also mal sehen. und danke
braucht man des oft? (bitte sag nein xD )
nein :D
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.
Was bedeutet dieses "raise"?
Das erzeugt einfach einen Fehler, der das Programm zum Absturz bringt und einen Fehler deiner Wahl ausgibt
Was ist dieses raise nochmal, das habe ich nicht kapiert.
Das ist quasi der Befehl, damit Python ganz absichtlich eine Exception wirft.
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
ja, ist aber auch nicht unbedingt sinnvoll. Das Programm funktioniert ja trotzdem nicht :D
The Morpheus Tutorials Es geht nur ums Angeben beim Programmieren :D
:D
kann man sich damit seine eigenen Error Definitionen schreiben damit es noobfreundlicher wird ?
Klar, du kannst mit throw eigene Exceptions werfen, das sind alle die, die von Exception erben
RuntimeError wird nicht erkannt wenn man ecxept Exceptions: verwendet... weiß jemand warum?
except.. nicht ecxept
richtig, aber daran liegts nicht war nur ein tippfehler.. er nimmt einfach lieber die Nachricht von Exceptions als die von RuntimeError
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
also irgend wie hast du deine TicTacToe Übung zu früh gemacht ;)
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?
except ist also bischen wie catch in c# ?
ziemlich genau das :)
oke danke
was ist mit finally?
Hab ich untern Tisch geschlagen, gibt es aber
Eine Antwort schneller als die polizei erlaubt, aber ok, halte finally eh irgendwie für unnötig
9 Stunden ist doch nicht schnell :D Das hier ist schnell^^
xD und noch dazu zu so nem alten video, good job
Das Totourial ist zwar schon sehr alt aber : ich versteh dieses Video irgendwie nicht D:
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 ;)
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
Und danke für die Totourials die sind echt gut 👍
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^^
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
Sehr gutes Video, aber irgendwie hab ich nicht begriffen was das pass macht.
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
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!