声明方法总是抛出异常的属性,以满足 BC42105

问题描述 投票:0回答:1
在 VB.Net 中,使用 .NET 7。

所需代码:

Private ReadOnly cgItems As IDictionary(Of Integer, Item) Public Function GetItem(itemID as Integer) As Item Dim item as Item = Nothing If cgItems.TryGetValue(itemID, item) tThen Return item Else ThrowItemDoesntExist(itemID) End If End Function Private Sub ThrowItemDoesntExist(itemID As Integer) Throw New ArgumentException($"The Item ID #{itemID} does not exist.", NameOf(itemID)) End Sub

ThrowItemDoesntExist
方法是从许多进行此类检查的地方调用的,因此使用单一方法可以实现一致性和轻松的代码维护。

但是,
GetItem

会引发 BC42105 警告,因为

ThrowItemDoesntExist

 无法指示它始终抛出 
Exception
当前解决方法

我当前的解决方法有点笨拙,那就是使用 <DoesNotReturn>

CodeAnalysis

 属性。它确实有效,但
感觉
错了。
Imports System.Diagnostics.CodeAnalysis Private ReadOnly cgItems As IDictionary(Of Integer, Item) Public Function GetItem(itemID as Integer) As Item Dim item as Item = Nothing If cgItems.TryGetValue(itemID, item) tThen Return item Else Return ThrowItemDoesntExist(itemID) End If End Function <DoesNotReturn> Private Function ThrowItemDoesntExist(itemID As Integer) Throw New ArgumentException($"The Item ID #{itemID} does not exist.", NameOf(itemID)) End Sub

有人可以建议更好的方法吗?
    

更新:
vb.net .net-core compiler-warnings
1个回答
0
投票
我意识到有一个简单的格式修复,可以让这个问题消失,没有任何花哨的属性,所以在这里发布给任何偶然发现它的人。

Public Function GetItem(itemID as Integer) As Item Dim item as Item = Nothing If Not cgItems.TryGetValue(itemID, item) Then ThrowItemDoesntExist(itemID) End If Return item End Function

现在我很后悔自己到现在才看到它。
    

© www.soinside.com 2019 - 2024. All rights reserved.