catching_josh 1.2.4 copy "catching_josh: ^1.2.4" to clipboard
catching_josh: ^1.2.4 copied to clipboard

A Flutter package that makes try-catch operations elegant and customizable with clean error logging and flexible error handling options.

catching_josh #

Author: Joseph88 Email: [email protected] (Feedback welcome) Version: 1.2.4 License: MIT Git: https://github.com/joseph-seph88/catching_josh

Simple error handling with automatic logging. Focus on business logic, not error handling.

pub package License


Why catching_josh? #

Before:

Future<String> fetchData() async {
  try {
    final response = await http.get(Uri.parse(url));
    if (response.statusCode >= 200 && response.statusCode < 300) {
      debugPrint('HTTP ${response.statusCode} Success: ${response.body}');
      return response.body.toString();
    } else {
      debugPrint('HTTP Error: ${response.statusCode} - ${response.reasonPhrase}');
      return 'Error: ${response.reasonPhrase}';
    }
  } catch (e) {
    debugPrint('Exception: $e');
    return 'Exception: $e';
  }
}

After:

Future<String> fetchData() async {
  final response = await joshReq(() => http.get(Uri.parse(url)));
  return response.data?.toString() ?? 'No data';
}

Usage #

Basic Examples #

// Sync operation
final result = joshSync(() => parseJson(jsonString));

// Async operation
final user = await joshAsync(() async => api.getUser(id));

// HTTP request
final response = await joshReq(() => http.get(url));

With Logging & Mock Data #

final result = await joshAsync(
  () async => api.getUser(id),
  logTitle: 'Get-User',
  showErrorLog: true,
  mockResultOnCatch: {'id': 1, 'name': 'Mock User'},
);

Batch Logging #

JoshLogBuffer.beginScope();
// ... multiple operations that generate logs
JoshLogBuffer.flushAll();  // Print all logs at once
JoshLogBuffer.endScope();

Core Functions #

Function Purpose Return Type
joshSync<T>() Sync operations StandardResult
joshAsync<T>() Async operations Future<StandardResult>
joshReq<T>() HTTP requests Future<StandardResponse>

Return Types #

class StandardResult {
  final Object? data;
  final String? dataType;
  final String? errorMessage;
  final bool? isSuccess;
}

class StandardResponse {
  final int? statusCode;
  final String? statusMessage;
  final dynamic data;
  final String? dataType;
  final bool? isSuccess;
}

Parameters #

Parameter Type Description
function Function Function to execute
logTitle String? Title for log messages
errorMessage String? Custom error message
showSuccessLog bool Log success (default: false)
showErrorLog bool Log errors (default: false)
mockResultOnCatch dynamic Mock data for testing
rethrowOnError bool Rethrow exceptions (default: false)
attachOriginalErrorMessage bool Include original error (default: false)

License #

MIT License - see LICENSE file for details.

1
likes
160
points
207
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package that makes try-catch operations elegant and customizable with clean error logging and flexible error handling options.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on catching_josh