Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Python Presentation
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Rafael László
Python Presentation
Commits
bc4cb2f2
Commit
bc4cb2f2
authored
Mar 9, 2021
by
Rafael László
Browse files
Options
Downloads
Patches
Plain Diff
error chapter
parent
d1a86424
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
guide/08_error.md
+56
-30
56 additions, 30 deletions
guide/08_error.md
with
56 additions
and
30 deletions
guide/08_error.md
+
56
−
30
View file @
bc4cb2f2
# Hibák és azok kezelése
# Hibák és azok kezelése
<Note
type=
"tip"
label
>
**TL;DR Tartalom**
-
[
Hibák általánosságban
](
#hibák-általánosságban
)
-
Objektumok, példák
-
[
Hibakezelés
](
#hibakezelés
)
-
[
Saját hiba osztályok
](
#saját-hiba-osztályok
)
- Ugyanolyan
osztály
-
[
try ... catch ...
](
#try--catch-
)
- Dobunk és elkapunk hibát
-
[
else
](
#else
)
- Semmi hiba nem volt, csinálj valamit
-
[
raise
](
#raise
)
- Hibával dobálózás
-
[
finally
](
#finally
)
- Még a returnt is felülírjuk
</Note>
<Note
label
>
**Extra feladatok**
_Ezek nem kötelező feladatok, csak megoldásuk közben könyebb
megtanulni a dolgokat_
-
Készíts egy saját hiba osztályt, melyben letárolsz
egy számot és híváskor kiírja azt.
(Tipp:
`\_\_init\_\_`
,
`\_\_str\_\_`
)
-
Imént definiált hibát kapd el, irasd ki és ne hagyd
miatta leállni a programot.
</Note>
## Hibák általánosságban
## Hibák általánosságban
Python, mint magasszintű nyelv hibák dobására és azok
Python, mint magasszintű nyelv hibák dobására és azok
...
@@ -42,6 +72,17 @@ TypeError: Can't convert 'int' object to str implicitly
...
@@ -42,6 +72,17 @@ TypeError: Can't convert 'int' object to str implicitly
## Hibakezelés
## Hibakezelés
### Saját hiba osztályok
Tudunk készíteni saját hibákat.
Ehhez csak egy osztályt kell készítenünk.
```
python
class
ForgovillaHiba
(
Exception
):
# Leszármazik az Exceptionből
"""
Valami baj van a forgóvillával
"""
pass
# sad SCH noises
```
### try ... catch ...
### try ... catch ...
`try`
és
`except`
kulcsszavakkal eltudjuk kapni a különböző
`try`
és
`except`
kulcsszavakkal eltudjuk kapni a különböző
...
@@ -50,10 +91,10 @@ hibáinkat.
...
@@ -50,10 +91,10 @@ hibáinkat.
```
python
```
python
>>>
while
True
:
>>>
while
True
:
...
try
:
...
try
:
...
x
=
int
(
input
(
"
Please enter a number
:
"
))
...
x
=
int
(
input
(
"
Adj meg egy számot
:
"
))
...
break
...
break
...
except
ValueError
:
...
except
ValueError
:
...
print
(
"
Oops! That was no valid number. Try again
...
"
)
...
print
(
"
Ez nem egy szám
...
"
)
...
...
```
```
...
@@ -84,9 +125,9 @@ class C(B):
...
@@ -84,9 +125,9 @@ class C(B):
class
D
(
C
):
class
D
(
C
):
pass
pass
for
cls
in
[
B
,
C
,
D
]:
for
osztaly
in
[
B
,
C
,
D
]:
try
:
try
:
raise
cls
()
raise
osztaly
()
except
D
:
except
D
:
print
(
"
D
"
)
print
(
"
D
"
)
except
C
:
except
C
:
...
@@ -102,27 +143,26 @@ egy változóba, majd annak tartalmával dolgozhatunk.
...
@@ -102,27 +143,26 @@ egy változóba, majd annak tartalmával dolgozhatunk.
import
sys
import
sys
try
:
try
:
f
=
open
(
'
myfile
.txt
'
)
f
=
open
(
'
fajl
.txt
'
)
s
=
f
.
readline
()
s
=
f
.
readline
()
i
=
int
(
s
.
strip
())
i
=
int
(
s
.
strip
())
except
OSError
as
err
:
except
OSError
as
err
:
print
(
"
OS error: {0}
"
.
format
(
err
))
print
(
"
OS error: {0}
"
.
format
(
err
))
except
ValueError
:
except
ValueError
:
print
(
"
Could not convert data to an integer
.
"
)
print
(
"
Nem sikerült intbe konvertálni
.
"
)
except
:
except
:
# Minden más
print
(
"
Unexpected error
:
"
,
sys
.
exc_info
()[
0
])
print
(
"
Váratlan hiba
:
"
,
sys
.
exc_info
()[
0
])
raise
raise
```
```
### else
### else
Egy
`try`
,
`catch`
blokk legvégére tehetünk egy
`else`
-t,
Egy
`try`
,
`catch`
blokk legvégére tehetünk egy
`else`
-t,
ha szeretnénk valamit lefuttatni ha nem történt semmi hiba.
hogy lefuttasunk valamit ha nem történt semmi hiba.
Előző példához próbálj hozzáírni valamit.
### raise
### raise
Mi is tudunk hibákat dobni
, ha szeretnénk
a
`raise`
Mi is tudunk hibákat dobni a
`raise`
kulcsszó segítségével.
kulcsszó segítségével.
```
python
```
python
...
@@ -136,13 +176,13 @@ NameError: HiThere
...
@@ -136,13 +176,13 @@ NameError: HiThere
>>>
try
:
>>>
try
:
...
raise
NameError
(
'
HiThere
'
)
...
raise
NameError
(
'
HiThere
'
)
...
except
NameError
:
...
except
NameError
:
...
print
(
'
An exception flew by
!
'
)
...
print
(
'
Egy hiba történt
!
'
)
...
raise
...
raise
...
...
An
exception
flew
by
!
An
exception
flew
by
!
Traceback
(
most
recent
call
last
):
Traceback
(
most
recent
call
last
):
File
"
<stdin>
"
,
line
2
,
in
<
module
>
File
"
<stdin>
"
,
line
2
,
in
<
module
>
NameError
:
HiThere
NameError
:
Egy
hiba
történt
!
```
```
### finally
### finally
...
@@ -152,27 +192,13 @@ lépéseket.
...
@@ -152,27 +192,13 @@ lépéseket.
Az itt definiált dolgok mindenképp lefognak futni, ha volt,
Az itt definiált dolgok mindenképp lefognak futni, ha volt,
ha nem volt hiba.
ha nem volt hiba.
```
```
python
>>> def
bool_return
():
>>>
def
fv
():
...
try
:
...
try
:
...
return
True
...
return
True
...
finally
:
...
finally
:
...
return
False
...
return
False
...
...
>>>
bool_return
()
>>>
fv
()
False
False
```
```
### Saját hiba osztályok
Mi is tudunk készíteni saját Hibákat.
Ehhez csak egy osztályt kell készítenünk.
```
python
class
Error
(
Exception
):
"""
Base class for exceptions in this module.
"""
pass
```
Ezt innentől ugyanúgy tudjuk dobni és elkapni.
Próbálj meg pár hiba osztályt te is készíteni!
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment