Error handling improvements
This commit is contained in:
parent
7a0ce93cfd
commit
46ca1948e2
@ -65,8 +65,8 @@ class CardData {
|
||||
}
|
||||
return CardData(rawData);
|
||||
}
|
||||
} catch (error) {
|
||||
Logger.e('Error parsing card: $error');
|
||||
} catch (error, stacktrace) {
|
||||
Logger.e('Parsing ${rawData['type']} card: $error', stacktrace: stacktrace);
|
||||
return ErrorCardData(rawData);
|
||||
}
|
||||
}
|
||||
@ -148,9 +148,8 @@ class CardData {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
Logger.e('Error filtering ${entityWrapper.entity.entityId} by $allowedState');
|
||||
Logger.e('$e');
|
||||
} catch (e, stacktrace) {
|
||||
Logger.e('Error filtering ${entityWrapper.entity.entityId} by $allowedState: $e', stacktrace: stacktrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,8 +29,8 @@ class TimerEntity extends Entity {
|
||||
Logger.e("Strange $entityId duration format: $durationSource");
|
||||
duration = Duration(seconds: 0);
|
||||
}
|
||||
} catch (e) {
|
||||
Logger.e("Error parsing duration for $entityId: ${e.toString()}");
|
||||
} catch (e, stacktrace) {
|
||||
Logger.e("Error parsing duration for $entityId: $e", stacktrace: stacktrace);
|
||||
duration = Duration(seconds: 0);
|
||||
}
|
||||
} else {
|
||||
|
@ -30,8 +30,8 @@ class _TimerStateState extends State<TimerState> {
|
||||
.difference(entity.lastUpdatedTimestamp)
|
||||
.inSeconds;
|
||||
remaining = Duration(seconds: entity.duration.inSeconds - passed);
|
||||
} catch (e) {
|
||||
Logger.e("Error calculating ${entity.entityId} remaining time: ${e.toString()}");
|
||||
} catch (e, stacktrace) {
|
||||
Logger.e("Error calculating ${entity.entityId} remaining time: $e", stacktrace: stacktrace);
|
||||
remaining = Duration(seconds: 0);
|
||||
}
|
||||
});
|
||||
|
@ -163,7 +163,7 @@ const appVersion = "$appVersionNumber-$appVersionAdd";
|
||||
Future<void> _reportError(dynamic error, dynamic stackTrace) async {
|
||||
// Print the exception to the console.
|
||||
if (Logger.isInDebugMode) {
|
||||
Logger.e('Caught error: $error');
|
||||
Logger.e('Caught error: $error', skipCrashlytics: true);
|
||||
Logger.p(stackTrace);
|
||||
}
|
||||
Crashlytics.instance.recordError(error, stackTrace);
|
||||
@ -175,7 +175,7 @@ void main() async {
|
||||
SyncfusionLicense.registerLicense(secrets['syncfusion_license_key']);
|
||||
|
||||
FlutterError.onError = (FlutterErrorDetails details) {
|
||||
Logger.e("Caut Flutter runtime error: ${details.exception}");
|
||||
Logger.e("Caut Flutter runtime error: ${details.exception}", skipCrashlytics: true);
|
||||
if (Logger.isInDebugMode) {
|
||||
FlutterError.dumpErrorToConsole(details);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ class AuthManager {
|
||||
eventBus.fire(StartAuthEvent(oauthUrl, false));
|
||||
completer.complete(tempToken);
|
||||
}).catchError((e) {
|
||||
Logger.e("Error getting temp token: ${e.toString()}");
|
||||
Logger.e("Error getting temp token: $e");
|
||||
eventBus.fire(StartAuthEvent(oauthUrl, false));
|
||||
completer.completeError(HACException("Error getting temp token"));
|
||||
}).whenComplete(() => flutterWebviewPlugin.close());
|
||||
|
@ -65,9 +65,9 @@ class ConnectionManager {
|
||||
.encodeComponent(
|
||||
'https://ha-client.app/service/auth_callback.html')}";
|
||||
settingsLoaded = true;
|
||||
} catch (e) {
|
||||
} catch (e, stacktrace) {
|
||||
completer.completeError(HACException("Error reading login details", actions: [HAErrorAction.tryAgain(type: HAErrorActionType.FULL_RELOAD), HAErrorAction.loginAgain()]));
|
||||
Logger.e("Cannt read secure storage. Need to relogin.");
|
||||
Logger.e("Error reading secure storage: $e", stacktrace: stacktrace);
|
||||
stopInit = true;
|
||||
}
|
||||
}
|
||||
@ -212,7 +212,7 @@ class ConnectionManager {
|
||||
//Logger.d("[Received] <== Request id ${data['id']} was successful");
|
||||
_messageResolver["${data["id"]}"]?.complete(data["result"]);
|
||||
} else if (data["id"] != null) {
|
||||
Logger.e("[Received] <== Error received on request id ${data['id']}: ${data['error']}");
|
||||
Logger.e("[Received] <== Error received on request id ${data['id']}: ${data['error']}", skipCrashlytics: true);
|
||||
_messageResolver["${data["id"]}"]?.completeError("${data["error"]["code"]}: ${data["error"]["message"]}");
|
||||
}
|
||||
_messageResolver.remove("${data["id"]}");
|
||||
@ -243,7 +243,7 @@ class ConnectionManager {
|
||||
}
|
||||
|
||||
void _handleSocketError(e, Completer connectionCompleter) {
|
||||
Logger.e("Socket stream Error: $e");
|
||||
Logger.e("Socket stream Error: $e", skipCrashlytics: true);
|
||||
_disconnect().then((_) {
|
||||
if (!connectionCompleter.isCompleted) {
|
||||
isConnected = false;
|
||||
|
@ -56,7 +56,7 @@ class MobileAppIntegrationManager {
|
||||
});
|
||||
}).catchError((e) {
|
||||
completer.complete();
|
||||
Logger.e("Error registering the app: ${e.toString()}");
|
||||
Logger.e("Error registering the app: $e");
|
||||
});
|
||||
return completer.future;
|
||||
} else {
|
||||
@ -98,10 +98,10 @@ class MobileAppIntegrationManager {
|
||||
completer.complete();
|
||||
}).catchError((e) {
|
||||
if (e is http.Response && e.statusCode == 410) {
|
||||
Logger.e("MobileApp integration was removed");
|
||||
Logger.e("MobileApp integration was removed", skipCrashlytics: true);
|
||||
_askToRegisterApp();
|
||||
} else {
|
||||
Logger.e("Error updating app registration: ${e.toString()}");
|
||||
Logger.e("Error updating app registration: $e");
|
||||
eventBus.fire(ShowPopupDialogEvent(
|
||||
title: "App integration is not working properly",
|
||||
body: "Something wrong with HA Client integration on your Home Assistant server. Please report this issue.",
|
||||
|
@ -29,22 +29,22 @@ class Logger {
|
||||
print(data);
|
||||
}
|
||||
|
||||
static void e(String message, {dynamic stacktrace}) {
|
||||
_writeToLog(ErrorLevel.ERROR, message, stacktrace);
|
||||
static void e(String message, {dynamic stacktrace, bool skipCrashlytics: false}) {
|
||||
_writeToLog(ErrorLevel.ERROR, message, stacktrace, skipCrashlytics);
|
||||
}
|
||||
|
||||
static void w(String message) {
|
||||
_writeToLog(ErrorLevel.WARNING, message, null);
|
||||
_writeToLog(ErrorLevel.WARNING, message, null, true);
|
||||
}
|
||||
|
||||
static void d(String message) {
|
||||
_writeToLog(ErrorLevel.DEBUG, message, null);
|
||||
_writeToLog(ErrorLevel.DEBUG, message, null, true);
|
||||
}
|
||||
|
||||
static void _writeToLog(ErrorLevel level, String message, dynamic stacktrace) {
|
||||
static void _writeToLog(ErrorLevel level, String message, dynamic stacktrace, bool skipCrashlytics) {
|
||||
if (isInDebugMode) {
|
||||
debugPrint('$message');
|
||||
} else if (level == ErrorLevel.ERROR) {
|
||||
} else if (!skipCrashlytics) {
|
||||
Crashlytics.instance.recordError('$message', stacktrace);
|
||||
}
|
||||
DateTime t = DateTime.now();
|
||||
|
Reference in New Issue
Block a user