| | """ |
| | Borsa Uygulaması için Hata Yönetimi Yardımcı Modülü |
| | Bu modül, uygulamada oluşabilecek hataları yönetmek için fonksiyonlar içerir. |
| | """ |
| |
|
| | import streamlit as st |
| | import logging |
| | from functools import wraps |
| | import traceback |
| | import sys |
| | from config import ERROR_MESSAGES |
| |
|
| | |
| | logging.basicConfig( |
| | level=logging.INFO, |
| | format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
| | handlers=[ |
| | logging.StreamHandler(sys.stdout) |
| | ] |
| | ) |
| |
|
| | logger = logging.getLogger("borsa_app") |
| |
|
| | def log_exception(e, context=""): |
| | """Hata logunu kaydeder ve hata stack trace'ini döndürür.""" |
| | error_message = f"{context}: {str(e)}" if context else str(e) |
| | logger.error(error_message) |
| | logger.error(traceback.format_exc()) |
| | return traceback.format_exc() |
| |
|
| | def handle_api_error(func): |
| | """API çağrıları sırasında oluşabilecek hataları yakalamak için decorator.""" |
| | @wraps(func) |
| | def wrapper(*args, **kwargs): |
| | try: |
| | return func(*args, **kwargs) |
| | except Exception as e: |
| | error_message = ERROR_MESSAGES.get("api_error", "Veri çekilirken bir hata oluştu.") |
| | log_exception(e, f"API Error in {func.__name__}") |
| | st.error(error_message) |
| | return None |
| | return wrapper |
| |
|
| | def handle_analysis_error(func): |
| | """Analiz sırasında oluşabilecek hataları yakalamak için decorator.""" |
| | @wraps(func) |
| | def wrapper(*args, **kwargs): |
| | try: |
| | return func(*args, **kwargs) |
| | except Exception as e: |
| | error_message = ERROR_MESSAGES.get("analysis_error", "Analiz sırasında bir hata oluştu.") |
| | log_exception(e, f"Analysis Error in {func.__name__}") |
| | st.error(error_message) |
| | return None |
| | return wrapper |
| |
|
| | def show_error_message(error_type, additional_info=""): |
| | """Yapılandırılmış hata mesajlarını gösterir.""" |
| | message = ERROR_MESSAGES.get(error_type, "Bir hata oluştu.") |
| | if additional_info: |
| | message += f" Detay: {additional_info}" |
| | st.error(message) |
| |
|
| | def try_except_block(error_type="analysis_error"): |
| | """İşlev için try-except bloğu oluşturan bir decorator.""" |
| | def decorator(func): |
| | @wraps(func) |
| | def wrapper(*args, **kwargs): |
| | try: |
| | return func(*args, **kwargs) |
| | except Exception as e: |
| | show_error_message(error_type) |
| | log_exception(e, f"Error in {func.__name__}") |
| | return None |
| | return wrapper |
| | return decorator |