From 88feb253d1455bf1f0579333170ff913734c538c Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Fri, 29 Jun 2018 12:58:47 +0200 Subject: [PATCH] jj: try to fix unhandled exception --- Global_Indexer/ClassDatabase.vb | 56 ++++++++++--- Global_Indexer/ClassFolderWatcher.vb | 60 +++++++------ Global_Indexer/ClassInit.vb | 121 ++++++++++++++++++++------- 3 files changed, 173 insertions(+), 64 deletions(-) diff --git a/Global_Indexer/ClassDatabase.vb b/Global_Indexer/ClassDatabase.vb index 95669f9..5e4a223 100644 --- a/Global_Indexer/ClassDatabase.vb +++ b/Global_Indexer/ClassDatabase.vb @@ -40,9 +40,17 @@ Public Class ClassDatabase Return dt Catch ex As SqlException - CatchDatabaseTimeout(ex, sql_command) + Dim handled = CatchDatabaseTimeout(ex, sql_command) - Return Nothing + If Not handled Then + If userInput = True Then + MsgBox("Error in Return_Datatable - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) + End If + ClassLogger.Add("Unexpected error in Return_Datatable: " & ex.Message, True) + ClassLogger.Add("#SQL: " & sql_command, False) + End If + + Return False Catch ex As Exception If userInput = True Then MsgBox("Error in Return Datatable - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) @@ -71,9 +79,17 @@ Public Class ClassDatabase Return dt Catch ex As SqlException - CatchDatabaseTimeout(ex, sql_command) + Dim handled = CatchDatabaseTimeout(ex, sql_command) - Return Nothing + If Not handled Then + If userInput = True Then + MsgBox("Error in Return_Datatable_CS - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) + End If + ClassLogger.Add("Unexpected error in Return_Datatable_CS: " & ex.Message, True) + ClassLogger.Add("#SQL: " & sql_command, False) + End If + + Return False Catch ex As Exception If userInput = True Then MsgBox("Error in Return_Datatable_CS - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) @@ -101,9 +117,17 @@ Public Class ClassDatabase Return True Catch ex As SqlException - CatchDatabaseTimeout(ex, sql_command) + Dim handled = CatchDatabaseTimeout(ex, sql_command) - Return Nothing + If Not handled Then + If userInput = True Then + MsgBox("Error in Execute non query - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) + End If + ClassLogger.Add("Unexpected error in Execute_non_Query: " & ex.Message, True) + ClassLogger.Add("#SQL: " & sql_command, False) + End If + + Return False Catch ex As Exception If userInput = True Then MsgBox("Error in Execute non query - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) @@ -133,9 +157,17 @@ Public Class ClassDatabase Return result Catch ex As SqlException - CatchDatabaseTimeout(ex, sql_command) + Dim handled = CatchDatabaseTimeout(ex, sql_command) - Return Nothing + If Not handled Then + If userInput = True Then + MsgBox("Error in Execute non query - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) + End If + ClassLogger.Add("Unexpected error in Execute_non_Query: " & ex.Message, True) + ClassLogger.Add("#SQL: " & sql_command, False) + End If + + Return False Catch ex As Exception If userInput = True Then MsgBox("Error in Execute Scalar - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) @@ -213,7 +245,7 @@ Public Class ClassDatabase End Try End Function - Public Shared Sub CatchDatabaseTimeout(ex As SqlException, sql_command As String) + Public Shared Function CatchDatabaseTimeout(ex As SqlException, sql_command As String) Dim FatalErrors As New List(Of Integer) From {-1, -2, 121} If FatalErrors.Contains(ex.Number) Then @@ -221,6 +253,10 @@ Public Class ClassDatabase ClassLogger.Add("Network timeout error in Return_Datatable: " & ex.Message, True) ClassLogger.Add("#SQL: " & sql_command, False) + + Return True + Else + Return False End If - End Sub + End Function End Class diff --git a/Global_Indexer/ClassFolderWatcher.vb b/Global_Indexer/ClassFolderWatcher.vb index 280c8d7..150bc82 100644 --- a/Global_Indexer/ClassFolderWatcher.vb +++ b/Global_Indexer/ClassFolderWatcher.vb @@ -6,34 +6,42 @@ Public Class ClassFolderWatcher Public Shared FolderWatcher As FileSystemWatcher Public Shared FolderWatcher_SCAN As FileSystemWatcher Public Shared Function Restart_FolderWatch() - If FolderWatcher.EnableRaisingEvents = True Then - 'Gestartet also Stoppen - FolderWatcher.EnableRaisingEvents = False - FW_started = False - 'FolderWatch neu instanzieren - FolderWatcher = New System.IO.FileSystemWatcher(CURRENT_FOLDERWATCH, "*.*") - ClassLogger.Add(" >> FolderWatch neu instanziert", False) - FolderWatcher.IncludeSubdirectories = False - FolderWatcher.EnableRaisingEvents = True - AddHandler FolderWatcher.Created, AddressOf OnCreated - FW_started = True - SaveConfigValue("FW_started", "True") - End If + Try + If FolderWatcher.EnableRaisingEvents = True Then + 'Gestartet also Stoppen + FolderWatcher.EnableRaisingEvents = False + FW_started = False + 'FolderWatch neu instanzieren + FolderWatcher = New System.IO.FileSystemWatcher(CURRENT_FOLDERWATCH, "*.*") + ClassLogger.Add(" >> FolderWatch neu instanziert", False) + FolderWatcher.IncludeSubdirectories = False + FolderWatcher.EnableRaisingEvents = True + AddHandler FolderWatcher.Created, AddressOf OnCreated + FW_started = True + SaveConfigValue("FW_started", "True") + End If + Catch ex As Exception + ClassLogger.Add($"Error in Restart_FolderWatch: {ex.Message}", False) + End Try End Function Public Shared Function Restart_FolderWatchSCAN() - If FolderWatcher_SCAN.EnableRaisingEvents = True Then - 'Gestartet also Stoppen - FolderWatcher_SCAN.EnableRaisingEvents = False - FWSCAN_started = False - 'FolderWatch neu instanzieren - FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*") - ClassLogger.Add(" >> FolderWatchScan neu instanziert", False) - FolderWatcher_SCAN.IncludeSubdirectories = False - FolderWatcher_SCAN.EnableRaisingEvents = True - AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated - FWSCAN_started = True - SaveConfigValue("FWSCAN_started", "True") - End If + Try + If FolderWatcher_SCAN.EnableRaisingEvents = True Then + 'Gestartet also Stoppen + FolderWatcher_SCAN.EnableRaisingEvents = False + FWSCAN_started = False + 'FolderWatch neu instanzieren + FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*") + ClassLogger.Add(" >> FolderWatchScan neu instanziert", False) + FolderWatcher_SCAN.IncludeSubdirectories = False + FolderWatcher_SCAN.EnableRaisingEvents = True + AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated + FWSCAN_started = True + SaveConfigValue("FWSCAN_started", "True") + End If + Catch ex As Exception + ClassLogger.Add($"Error in Restart_FolderWatchSCAN: {ex.Message}", False) + End Try End Function Public Shared Function StartStop_FolderWatch() Try diff --git a/Global_Indexer/ClassInit.vb b/Global_Indexer/ClassInit.vb index 65067e1..eadf419 100644 --- a/Global_Indexer/ClassInit.vb +++ b/Global_Indexer/ClassInit.vb @@ -58,39 +58,103 @@ Public Class ClassInit End Sub Public Sub Init_Folderwatch() Try - 'Die FolderWatch starten - Dim sql1 = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'DEFAULT' AND USER_ID = " & CURRENT_USER_ID - Dim folderwatch = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True) - sql1 = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & CURRENT_USER_ID - Dim folderwatch_SCAN = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True) - If Not folderwatch Is Nothing Then - CURRENT_FOLDERWATCH = folderwatch - If FW_started = True Then - If CURRENT_FOLDERWATCH = "" Then - FW_started = False - SaveConfigValue("FW_started", "False") - Else - FW_ISSTARTED = True - ClassFolderWatcher.StartStop_FolderWatch() - End If + Dim sql As String = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'DEFAULT' AND USER_ID = " & CURRENT_USER_ID + Dim folderwatchPath = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) - End If - Else - ClassLogger.Add("Init_Folderwatch: folderwatch path is nothing!", True) + folderwatchPath = IIf(IsDBNull(folderwatchPath), "", folderwatchPath) + + If folderwatchPath = String.Empty Then + ClassLogger.Add("Init_Folderwatch: folderwatchPath is empty", True) + FW_started = False + SaveConfigValue("FW_started", "False") + Exit Sub End If - If Not folderwatch_SCAN Is Nothing Then - CURRENT_SCAN_FOLDERWATCH = folderwatch_SCAN - If FWSCAN_started = True Then - FW_ISSTARTED = True - ClassFolderWatcher.StartStop_FolderWatchSCAN() - End If - Else - ClassLogger.Add("Init_Folderwatch: folderwatch_SCAN path is nothing!", True) + + If Not IO.Directory.Exists(folderwatchPath) Then + ClassLogger.Add("Init_Folderwatch: folderwatchPath does not exists or is invalid path", True) + FW_started = False + SaveConfigValue("FW_started", "False") + Exit Sub + End If + + CURRENT_FOLDERWATCH = folderwatchPath + + FW_started = True + FW_ISSTARTED = True + ClassFolderWatcher.StartStop_FolderWatch() + Catch ex As Exception + MsgBox($"Init_Folderwatch: Unexpected error while starting FolderWatch: {ex.Message}", MsgBoxStyle.Critical) + ClassLogger.Add($"Init_Folderwatch: Unexpected error: {ex.Message}", True) + START_INCOMPLETE = True + End Try + + Try + Dim sql As String = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & CURRENT_USER_ID + Dim folderwatchScanPath = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) + + folderwatchScanPath = IIf(IsDBNull(folderwatchScanPath), "", folderwatchScanPath) + + If folderwatchScanPath = String.Empty Then + ClassLogger.Add("Init_Folderwatch: folderwatchScanPath is empty", True) + FWSCAN_started = False + SaveConfigValue("FW_started", "False") + Exit Sub End If + + If Not IO.Directory.Exists(folderwatchScanPath) Then + ClassLogger.Add("Init_Folderwatch: folderwatchScanPath does not exists or is invalid path", True) + FWSCAN_started = False + SaveConfigValue("FW_started", "False") + Exit Sub + End If + + CURRENT_SCAN_FOLDERWATCH = folderwatchScanPath + + FWSCAN_started = True + FW_ISSTARTED = True + ClassFolderWatcher.StartStop_FolderWatchSCAN() Catch ex As Exception - ClassLogger.Add("Unexpected Error in Init_Folderwatch: " & ex.Message, True) + MsgBox($"Init_Folderwatch: Unexpected error while starting FolderWatchScan: {ex.Message}", MsgBoxStyle.Critical) + ClassLogger.Add($"Init_Folderwatch: Unexpected error: {ex.Message}", True) START_INCOMPLETE = True End Try + + + + 'Try + ' 'Die FolderWatch starten + 'Dim sql1 = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'DEFAULT' AND USER_ID = " & CURRENT_USER_ID + ' Dim folderwatch = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True) + ' sql1 = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & CURRENT_USER_ID + ' Dim folderwatch_SCAN = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True) + ' If Not folderwatch Is Nothing Then + ' CURRENT_FOLDERWATCH = folderwatch + ' If FW_started = True Then + ' If CURRENT_FOLDERWATCH = "" Then + ' FW_started = False + ' SaveConfigValue("FW_started", "False") + ' Else + ' FW_ISSTARTED = True + ' ClassFolderWatcher.StartStop_FolderWatch() + ' End If + + ' End If + ' Else + ' ClassLogger.Add("Init_Folderwatch: folderwatch path is nothing!", True) + ' End If + ' If Not folderwatch_SCAN Is Nothing Then + ' CURRENT_SCAN_FOLDERWATCH = folderwatch_SCAN + ' If FWSCAN_started = True Then + ' FW_ISSTARTED = True + ' ClassFolderWatcher.StartStop_FolderWatchSCAN() + ' End If + ' Else + ' ClassLogger.Add("Init_Folderwatch: folderwatch_SCAN path is nothing!", True) + ' End If + 'Catch ex As Exception + ' ClassLogger.Add("Unexpected Error in Init_Folderwatch: " & ex.Message, True) + ' START_INCOMPLETE = True + 'End Try End Sub Public Sub InitUserLogin() Try @@ -154,7 +218,8 @@ Public Class ClassInit sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & CURRENT_USER_ID & " AND UPPER(MODULE) = UPPER('Global-Indexer')" ClassDatabase.Execute_non_Query(sql, True) - sql = "INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,MODULE) VALUES (" & CURRENT_USER_ID & ",'Global-Indexer')" + sql = $"INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID, MODULE, CLIENT_ID, CONNECTION_STRING) VALUES ({CURRENT_USER_ID}, '{"Global-Indexer"}', 1, '')" + 'sql = "INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,MODULE) VALUES (" & CURRENT_USER_ID & ",'Global-Indexer')" ClassDatabase.Execute_non_Query(sql) sql = "SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE Upper(MODULE) = UPPER('Global-Indexer')"