gpt4 book ai didi

c# - 在 Type.GetType(..) == null 上抛出什么?

转载 作者:行者123 更新时间:2023-11-30 16:52:41 26 4
gpt4 key购买 nike

在后台使用 Type.GetType(typeName) 的公共(public) API 中最正确的做法是什么?

//inside a message deserializer of a framework...
....

//1. throw TypeLoadException
var type = Type.GetType(typeName,true);


//2. or..
var type = Type.GetType(typeName,false);
if (type == null)
throw new SomeMoreSpecificException("Could not find message type " + typeName +", deserialization failed");


//3. or
Type type;
try
{
type = Type.GetType(typeName,true);
}
catch(TypeLoadException x)
{
throw new SomeMoreSpecificException("some message",x);
}

在这种情况下,您认为以上哪种方法对最终用户最有帮助?

我在这里倾向于后一种情况,因为您同时获得了真正的 TypeLoadException 和一些特定于这个用例的附加信息。还是我们应该只考虑 TypeLoadException 本身对最终用户来说就足够了?

想法?

[编辑] 更多上下文,见 https://github.com/akkadotnet/akka.net/issues/1279

在 Akka.NET 中,我们可以对 actor 进行“远程部署”。如果接收部署请求的远程系统不知道应该部署的类型,我们需要以某种方式通知它。仅抛出 TypeLoadException 感觉有点廉价,因为它没有将问题精确定位到远程部署场景。

最佳答案

这里没有正确和错误的答案。折衷是在抛出的异常中提供更多详细信息,而不是抛出两个异常(原始异常和自定义异常)而不是一个。

问题是 - 您希望用户在您抛出异常时做什么?您提供的“某些消​​息”是否提供了比原始异常更多的详细信息?或者如果它得到特定的异常类型,它会让用户做一些不同的事情吗?如果没有,我会让原来的异常冒泡。

关于c# - 在 Type.GetType(..) == null 上抛出什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32315574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com