初始化项目
This commit is contained in:
43
bin/middleware/exception_handler.dart
Normal file
43
bin/middleware/exception_handler.dart
Normal file
@@ -0,0 +1,43 @@
|
||||
import 'package:shelf/shelf.dart';
|
||||
import 'dart:io';
|
||||
|
||||
/// 全局异常处理中间件
|
||||
/// 捕获所有未处理的异常并返回适当的 HTTP 响应
|
||||
Middleware exceptionHandler() {
|
||||
return (Handler innerHandler) {
|
||||
return (Request request) async {
|
||||
try {
|
||||
return await innerHandler(request);
|
||||
} on FormatException catch (e) {
|
||||
// 处理参数格式错误,如无效的 ID
|
||||
return Response.badRequest(
|
||||
body: 'Invalid parameter format: ${e.message}',
|
||||
headers: {'content-type': 'text/plain'},
|
||||
);
|
||||
} on PathNotFoundException catch (e) {
|
||||
// 处理路径未找到
|
||||
return Response.notFound('Resource not found: ${e.message}');
|
||||
} on FileSystemException catch (e) {
|
||||
// 处理文件系统错误
|
||||
return Response.internalServerError(
|
||||
body: 'File system error: ${e.message}',
|
||||
headers: {'content-type': 'text/plain'},
|
||||
);
|
||||
} on Exception catch (e) {
|
||||
// 处理其他已知异常
|
||||
return Response.internalServerError(
|
||||
body: 'Internal server error: ${e.toString()}',
|
||||
headers: {'content-type': 'text/plain'},
|
||||
);
|
||||
} catch (e, stackTrace) {
|
||||
// 处理未知异常
|
||||
print('Unhandled exception: $e');
|
||||
print('Stack trace: $stackTrace');
|
||||
return Response.internalServerError(
|
||||
body: 'An unexpected error occurred',
|
||||
headers: {'content-type': 'text/plain'},
|
||||
);
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user