c# - 通过自定义异常处理传递额外的程序状态信息

标签 c# exception

简而言之,我正在努力实现这样的目标:

public class AssetParseException : Exception
{
    public AssetParseException()
    {

    }

    public AssetParseException( string message/*, int assetID*/ ): base(message)
    {

    }
}

理想情况下,这会给我这个功能:

catch (AssetParseException exception)
{
    int idThatCausedIssue = exception.assetID;
}

我想要的额外信息是整数参数。我想在更高级别捕获 AssetParseExceptions 并知道哪个 Assets 引发了异常。这可能吗?我是否需要将所有这些信息都塞进消息中,然后在更高级别解析它?

最佳答案

只需添加:

public int AssetID {get;私有(private)集;

到您的 AssetParseException 类,并在您使用

创建新异常时设置它
AssetParseException(string message, int assetID):base(message)
{
   AssetID = assetID;
}

我们一直这样做。了解有关异常的额外信息总是很好,为什么不把它放进去,因为你已经不厌其烦地抛出特定类型的异常。

关于c# - 通过自定义异常处理传递额外的程序状态信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4504452/

相关文章:

c# - iOS 从本地通知打开页面

c# - ValueProvider 不包含 TryGetValue 的定义

c# - 从服务器下载文件,然后在服务器上删除

java - 在可运行的 jar 中找不到 getTimeStamp(),但在其他地方找到

c# - 如何在 Winforms 中更改 ToolStripItem 的选中状态?

c# - 在两个图像之间转换的最有效方法是什么(如 Mac 墙纸更改)

java - 抛出时自定义 Java 异常打印

c++ - 在 C++ 中抛出表达式重新排序?

c# - 如果我在 SqlConnection 的 using 语句中捕获异常,using 是否仍然处理关闭和处理我的连接?

javascript - Protractor - 无法读取 EC.textToBePresentInElement 的未定义属性绑定(bind)