C# 为什么asp.net zero应用程序服务没有try-and-catch异常?

C# 为什么asp.net zero应用程序服务没有try-and-catch异常?,c#,asp.net,C#,Asp.net,我是asp.NETZero框架的新手。我只是想知道,示例asp.net代码在应用程序服务文件夹中不使用try-catch块是否有任何原因。例如,我们有下面已经包含的示例代码-似乎没有包含try和catch是有原因的,但是为什么 try/catch并不是因为“仅仅因为”而添加的,而是因为在某些预期出现异常的场景中,您可以做一些有用的事情。那么,想必这里没有适用的情况;预计不会发生异常,因此,如果确实发生了异常:出现了问题,就让它引发。如果没有好的理由,你不应该养成隐藏异常的习惯(比如:你已经处理了

我是asp.NETZero框架的新手。我只是想知道,示例asp.net代码在应用程序服务文件夹中不使用try-catch块是否有任何原因。例如,我们有下面已经包含的示例代码-似乎没有包含try和catch是有原因的,但是为什么


try
/
catch
并不是因为“仅仅因为”而添加的,而是因为在某些预期出现异常的场景中,您可以做一些有用的事情。那么,想必这里没有适用的情况;预计不会发生异常,因此,如果确实发生了异常:出现了问题,就让它引发。如果没有好的理由,你不应该养成隐藏异常的习惯(比如:你已经处理了预期的失败并成功地恢复了)


在许多方面,
try
/
最终
在大多数代码中应该比
try
/
catch
更为常见,即使如此,它也应该主要由编译器通过
使用
生成-您可以添加它,因为在预期出现异常的情况下,您可以执行一些有用的操作。那么,想必这里没有适用的情况;预计不会发生异常,因此,如果确实发生了异常:出现了问题,就让它引发。如果没有好的理由,你不应该养成隐藏异常的习惯(比如:你已经处理了预期的失败并成功地恢复了)


在许多方面,
try
/
最终
在大多数代码中应该比
try
/
catch
更为常见,即使如此,它也应该主要由编译器通过
使用

生成。您希望它在catch块中给出什么建议?一条注释说,
//在这里处理异常
?我希望在errorlog数据库中记录一个错误。但我假设“可能”有其他机制已经在框架中处理它。我对这个框架还是新手,需要更深入地了解它是如何工作的。@avdeveloper好的,日志记录很好,但是为什么
IsTenantAvailable
?这在某些更高级别的工作泵/循环中可能很常见,但您不需要将其分散到每个方法中(我们有堆栈跟踪以查看异常来自何处,因此在每个方法中记录异常是过分的)。顺便说一句,此方法可以很好地处理业务异常。它只是不关心如何处理运行时异常(有人拔下网络电缆,FindByTenancyNameAsync失败)。它不能做任何事情来减轻它,所以它就是不能。你希望它在捕获块中有什么建议?一条注释说,
//在这里处理异常
?我希望在errorlog数据库中记录一个错误。但我假设“可能”有其他机制已经在框架中处理它。我对这个框架还是新手,需要更深入地了解它是如何工作的。@avdeveloper好的,日志记录很好,但是为什么
IsTenantAvailable
?这在某些更高级别的工作泵/循环中可能很常见,但您不需要将其分散到每个方法中(我们有堆栈跟踪以查看异常来自何处,因此在每个方法中记录异常是过分的)。顺便说一句,此方法可以很好地处理业务异常。它只是不关心如何处理运行时异常(有人拔下网络电缆,FindByTenancyNameAsync失败)。它不能做任何事情来减轻它,所以它就是不能。如果我遗漏了什么,请纠正我,但是
使用
不会只给你
尝试/最终
调用
Dispose()
的保证吗?如果一个对象没有实现
IDisposable
或者您需要进行其他清理,我认为使用
不会有任何好处。当然,我知道这是实现该接口的一个很好的论据。@Zer0是的,这只适用于
IDisposable
(现在是
IAsyncDisposable
,以及
ref-struct
)-这种资源清理可能是最常见的
try
/
finally
场景(如果我们忽略
foreach
并假装它也使用
try
/
finally
作为可选迭代器处理的中间步骤),请纠正我是否遗漏了什么,但是
使用
不就是给了您调用
Dispose()
尝试/最终
保证吗?如果一个对象没有实现
IDisposable
或者您需要进行其他清理,我认为使用
不会有任何好处。当然,我知道这是实现该接口的一个很好的论据。@Zer0是的,这只适用于
IDisposable
(现在是
IAsyncDisposable
,以及
ref-struct
)-这种资源清理可能是最常见的
try
/
finally
场景(如果我们忽略
foreach
并假装它也使用
try
/
finally
作为可选迭代器处理的中间步骤)