封装成类 并增加异常捕获
时间: 2023-07-25 12:42:54 浏览: 46
好的,以下是一个封装成类并增加异常捕获的示例代码:
```csharp
public class FileController : ControllerBase
{
private readonly ILogger<FileController> _logger;
public FileController(ILogger<FileController> logger)
{
_logger = logger;
}
[HttpGet("download")]
public async Task<IActionResult> DownloadFile(string fileName)
{
try
{
// 拼接文件路径
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Files", fileName);
// 判断文件是否存在
if (!System.IO.File.Exists(filePath))
{
return NotFound();
}
// 读取文件内容
var fileContent = await System.IO.File.ReadAllBytesAsync(filePath);
// 返回文件流
return File(fileContent, "application/octet-stream", fileName);
}
catch (Exception ex)
{
_logger.LogError(ex, "下载文件出错");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
}
```
在上面的代码中,我们将文件下载的代码封装成了一个 `FileController` 类,并在构造函数中注入了一个 `ILogger<FileController>` 类型的日志记录器,用于记录异常信息。
在下载文件的方法中,我们使用了 `try...catch` 语句来捕获异常,并将异常信息记录到日志中。如果出现异常,我们将返回一个 `500 Internal Server Error` 的状态码。