Working commit to better handle errors

This commit is contained in:
blitzmann
2017-11-26 01:54:36 -05:00
parent fcdf55632f
commit 1da127c898
3 changed files with 53 additions and 26 deletions

View File

@@ -17,31 +17,42 @@
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
# ===============================================================================
import platform
import sys
# import platform
# import sys
#
# # noinspection PyPackageRequirements
# import wx
#
# try:
# import config
# except:
# config = None
#
# try:
# import sqlalchemy
#
# sqlalchemy_version = sqlalchemy.__version__
# except:
# sqlalchemy_version = "Unknown"
#
# try:
# from logbook import __version__ as logbook_version
# except:
# logbook_version = "Unknown"
#
# import wx.lib.agw.hyperlink
# noinspection PyPackageRequirements
import wx
try:
import config
except:
config = None
class ErrorFrameHandler(object):
__app = None
try:
import sqlalchemy
sqlalchemy_version = sqlalchemy.__version__
except:
sqlalchemy_version = "Unknown"
try:
from logbook import __version__ as logbook_version
except:
logbook_version = "Unknown"
import wx.lib.agw.hyperlink
@classmethod
def HandleException(cls, exc_type, exc_value, exc_traceback):
print("Handle excpetion! {}".format(cls.__app))
@classmethod
def SetApp(cls, wxApp):
cls.__app = wxApp
class ErrorFrame(wx.Frame):

11
pyfa.py
View File

@@ -20,11 +20,10 @@
import os
import platform
import sys
import traceback
from optparse import AmbiguousOptionError, BadOptionError, OptionParser
from service.prereqsCheck import PreCheckException, version_precheck, version_block
from service.prereqsCheck import PreCheckException, PreCheckMessage, version_precheck, version_block
from logbook import CRITICAL, DEBUG, ERROR, FingersCrossedHandler, INFO, Logger, NestedSetup, NullHandler, StreamHandler, TimedRotatingFileHandler, WARNING, \
__version__ as logbook_version
@@ -161,9 +160,10 @@ def handleGUIException(exc_type, exc_value, exc_traceback):
pass
# sys.exit()
from gui.errorDialog import ErrorFrameHandler
# Replace the uncaught exception handler with our own handler.
sys.excepthook = handleGUIException
sys.excepthook = ErrorFrameHandler.HandleException
# Parse command line options
usage = "usage: %prog [--root]"
@@ -193,7 +193,10 @@ if __name__ == "__main__":
# Configure paths
print ('starting')
version_precheck()
try:
version_precheck()
except PreCheckException as ex:
PreCheckMessage(str(ex))
import wx

View File

@@ -8,6 +8,19 @@ version_block = ''
class PreCheckException(Exception):
pass
class PreCheckMessage():
def __init__(self, msg):
# wx may not be installed, in which case print to console. For all other prechecks, should pop up a MessageDialog
try:
import wx
app = wx.App(False)
wx.MessageBox(msg, 'Error', wx.ICON_ERROR | wx.STAY_ON_TOP)
app.MainLoop()
except:
pass
finally:
print(msg)
sys.exit()
def version_precheck():
global version_block
@@ -40,7 +53,7 @@ def version_precheck():
saMatch = re.match("([0-9]+).([0-9]+).([0-9]+)(([b\.])([0-9]+))?", sqlalchemy.__version__)
version_block += "\nSQLAlchemy version: {}".format(sqlalchemy.__version__)
if (int(saMatch.group(1)), int(saMatch.group(2)), int(saMatch.group(3))) < (3, 0, 5):
if (int(saMatch.group(1)), int(saMatch.group(2)), int(saMatch.group(3))) < (1, 0, 5):
raise Exception()
except:
msg = "pyfa requires SQLAlchemy v1.0.5+. You can download SQLAlchemy from https://www.sqlalchemy.org/download.html"