Working commit to better handle errors
This commit is contained in:
@@ -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
11
pyfa.py
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user