通过自定义异常处理传送其他程序状态信息

Sea*_*son 1 c# exception-handling

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

public class AssetParseException : Exception
{
    public AssetParseException()
    {

    }

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

    }
}
Run Code Online (Sandbox Code Playgroud)

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

catch (AssetParseException exception)
{
    int idThatCausedIssue = exception.assetID;
}
Run Code Online (Sandbox Code Playgroud)

我想要的额外信息是整数参数.我想在更高级别捕获AssetParseExceptions并知道哪个资产引发了异常.这可能吗?我是否需要将所有这些信息推送到邮件中,然后在更高级别解析它?

kem*_*002 5

只需添加:

public int AssetID {get; private set;}

到您的AssetParseException班级并在使用时创建新例外时设置它

AssetParseException(string message, int assetID):base(message)
{
   AssetID = assetID;
}
Run Code Online (Sandbox Code Playgroud)

我们一直这样做.知道关于异常的其他信息总是很好,为什么不把它放进去,因为你已经麻烦扔掉一个特定类型的异常.

  • 别担心.这有点小错误有时会让我们感到沮丧:) (2认同)