C# 例外处理程序可以';捕获响应异常

C# 例外处理程序可以';捕获响应异常,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我正在dotnetcore上创建一个webapi应用程序,试图捕获一个异常,但它不起作用 using Microsoft.AspNetCore.Mvc; using System; namespace WebApplication1.Controllers { public class TestModel { public long Num { get; set; } public decimal TotalCost { get; set; }

我正在dotnetcore上创建一个webapi应用程序,试图捕获一个异常,但它不起作用

using Microsoft.AspNetCore.Mvc;
using System;

namespace WebApplication1.Controllers
{
    public class TestModel
    {
        public long Num { get; set; }
        public decimal TotalCost { get; set; }
        public decimal Avg => Math.Round(TotalCost / Num, 4);
    }
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<TestModel> Get()
        {
            return new TestModel { Num = 0, TotalCost = 1 };
        }
    }
}
使用Microsoft.AspNetCore.Mvc;
使用制度;
命名空间WebApplication1.Controllers
{
公共类测试模型
{
公共长数值{get;set;}
公共十进制总成本{get;set;}
公共十进制平均值=>Math.Round(TotalCost/Num,4);
}
[路由(“api/[控制器]”)]
[ApiController]
公共类值控制器:控制器库
{
//获取api/值
[HttpGet]
公共行动结果获取()
{
返回新的TestModel{Num=0,TotalCost=1};
}
}
}

我期望异常的输出,但它显示nomal

它不会引发异常,直到您调用.Avg:
\u=l.Avg因此实际代码被触发,并将抛出一个
DivideByZeroException
异常

    [HttpGet]
    public ActionResult<TestModel> Get()
    {

        var l =  new TestModel { Num = 0, TotalCost = 1 };
        _ = l.Avg;

        return l;
    }
[HttpGet]
公共行动结果获取()
{
var l=newtestmodel{Num=0,TotalCost=1};
_=l.平均值;
返回l;
}

Hi,您没有试图捕获任何异常:)您的
try
catch
在哪里?在启动时,我使用了一个错误处理中间件,但请求管道不是发生此错误的范围,但在复杂的项目中,我们不能这样做。这个异常发生在返回时,而不是在操作时,但这没关系,这只是为了测试目的,不是吗?我以为你只是想测试你的错误处理中间件。