Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从外部类捕获异常_C#_Exception - Fatal编程技术网

C# 如何从外部类捕获异常

C# 如何从外部类捕获异常,c#,exception,C#,Exception,我有一个外文类,它抛出异常“未知异常”。 我想在我的代码中捕捉它,并编写类似“错误!执行以下步骤:…”的消息 所以,我的代码: try { var p = new MyObject(prms); // this code failed and throw exception-"Unknown exception" return p; } catch (Exception ex) { // Output ex Console.Wri

我有一个外文类,它抛出异常“未知异常”。 我想在我的代码中捕捉它,并编写类似“错误!执行以下步骤:…”的消息

所以,我的代码:

try
{
    var p = new MyObject(prms); // this code failed and throw exception-"Unknown exception" 
    
    return p;
}
catch (Exception ex)
{
    // Output ex 
    Console.WriteLine("Error! "+ex.Message);
}
如何包装外部异常并显示我的文本? 谢谢

p.S.外国代码如下所示:

try
        {
            lock (_lockObject)
            {
                return MyObject();
            }
        }
        catch (Exception exp)
        {
            throw ThrowWrapper(exp);
        }   

类不会抛出异常,函数会抛出异常。如果
MyObject
的构造函数抛出异常,则显示的代码将捕获该异常。如果
MyObject
的另一个成员函数抛出,则在调用此成员函数的位置需要一个
try catch

可以在此处找到如何将“外部”异常包装到自己的异常中的一个很好的示例:
为什么不做一些简单的事情,比如

使用现有代码;(请参见catch中的代码更改)

请注意,这是一种“快速”处理此问题的方法,正确的方法是创建您自己的异常,并按照其他一些答案的建议进行处理

希望有帮助


这不会达到您想要的效果吗?

那么您的代码有什么问题吗?我觉得还可以。定义
外部异常
?目前,这段代码将捕获try中的任何异常。啊,也许你说的是将原始异常包装在你自己的内部,这样原始异常就是内部异常?这可能会有帮助:Surfbutler,是的,我想将原始异常包装在我自己的内部)
try
{
    var p = new MyObject(prms); // this code failed and throw exception-"Unknown exception" 

    return p;
}
catch (Exception ex)
{
    If (ex.Message.Contains("Unknown exception"))
       {
         //Add code here to handle the Unknown exception
       }
    else
       {
         Console.WriteLine("Error! "+ex.Message);
       }
}