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

chore: improvisasi error #34

Merged
merged 1 commit into from
Feb 1, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 36 additions & 9 deletions OpenSeries/util/error.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,48 @@
# kostum error
# file error.py berisi tentang kustomisasi error dengan beberapa tujuan antara lain:
# - mendeteksi error terkait tipe data
# - membuat error kustom dengan pesan tertentu
# - menangani error terkait indeks saat melakukan indexing pada struktur data
# - menangani error terkait dengan validasi dari values
# - menampilkan error saat mencoba dengan pembagian dengan error

from OpenSeries.util import constant as warna


class ErrorTipeData(TypeError):
"""
kelas untuk mendeteksi error dari tipe data
Kelas untuk mendeteksi error dari tipe data

parameter:
Parameter:
expected_types (list[str]): tipe data yang dimasukkan

return:
Return:
(str): pesan error tipe data sesuai dari inputan
"""

def __init__(self, expected_types: list[str]):
message = f"{warna.red}Error Tipe:{warna.reset_warna} tipe data Harus {' atau '.join(expected_types)}"
# mengecek apakah list expected_types tidak kosong
if not expected_types:
raise ValueError("tipe data dalam list tidak boleh kosong")
# mengecek apakah semua element di dalam expected_types adalah string
if not all(isinstance(data, str) for data in expected_types):
raise TypeError("element dari tipe data harus str (string)!")

# membuat pesan error dengan memanggil method format_tipe_data
message = self.format_tipe_data(expected_types)
super().__init__(message)

def format_tipe_data(self, tipe_data: list[str]) -> str:
# gabungkan element list menjadi string terpisah oleh `" atau "`
tipe_str = " atau ".join(map(str, tipe_data))
return f"{warna.red}Error Tipe Data:{warna.reset_warna} tipe data harus {tipe_str}!"


class Error(Exception):
"""
kelas untuk membuat kostumisasi error
Kelas untuk membuat kostumisasi error

parameter:
Parameter:
pesan (str): pesan kostum yang ingin dimasukkan
"""

Expand All @@ -32,7 +53,10 @@ def __init__(self, pesan: str):

class IndeksError(IndexError):
"""
kelas untuk membuat error dari index jika tidak selaras dengan dimensi atau lain
Kelas untuk membuat error dari index jika tidak selaras dengan dimensi atau lain

Parameter:
pesan (str): Pesan yang akan menjelaskan kesalahan indeks
"""

def __init__(self, pesan: str):
Expand All @@ -42,7 +66,10 @@ def __init__(self, pesan: str):

class ErrorValue(ValueError):
"""
kelas untuk membuat error dari index dengan throw dari ValueError
Kelas untuk membuat error dari index dengan throw dari ValueError

Parameter:
pesan (str): Pesan yang menjelaskan kesalahan nilai
"""

def __init__(self, pesan: str):
Expand All @@ -52,7 +79,7 @@ def __init__(self, pesan: str):

class ErrorDibagiNol(ZeroDivisionError):
"""
kelas untuk menampilkan error yang tidak bisa dibagi dengan nol
Kelas untuk menampilkan error yang tidak bisa dibagi dengan nol
"""

def __init__(self):
Expand Down
Loading