在catch块中引发异常

renchan

我无法理解如何在返回值的方法中处理异常,在我的情况下,该值是Person []类型的值。我试图按照这里写的那样-创建和抛出异常,但是我仍然遇到异常-抛出icex; 线。有人可以给我一个提示吗?我也尝试在catch块中返回null而不是throw,但是我只得到另一个异常(我故意使用ArrayList而不是List)

static ArrayList CreateNonGenericList()
    {            
        ArrayList personList = new ArrayList()
            {
                new Person {FirstName="John", LastName="Clark", Age=39, 
                    StartDate= new DateTime(1989, 12, 30)},
                new Person{FirstName="Zefa", LastName="Thoms", Age=23, 
                    StartDate= new DateTime(2003, 4, 12)},
                new Person{FirstName="Robin", LastName="Hood", Age=33, 
                    StartDate= new DateTime(2001, 4, 12)}
            };
        personList.Add("John"); //Passing a String value instead of Person
        return personList;
    }

    static Person[] SortNonGenericList(ArrayList personList)
    {
        try
        {
            Person[] latestpersonList = (from Person p in personList
                                         where p.StartDate > new DateTime(2000, 1, 1)
                                         select p).ToArray();
            return latestpersonList; 
        }
        catch (InvalidCastException ex)
        {
            InvalidCastException icex = new InvalidCastException(ex.Message, ex);                
            throw icex; //Getting an InvalidCastException here  
        }    
    }        
埃文维斯

如果您只想让方法的调用者处理该异常,则可以try/catch完全删除该块。未捕获到异常时,它们会自动“冒泡”。

如果要在catch块中执行某些操作(例如记录),则应引发原始异常:

catch (InvalidCastException ex)
{
    // Log(ex);
    throw;
}

这样,异常中的堆栈跟踪不会像当前代码中那样“重置”。

正如其他人指出的那样,您当前正在做的事情是没有用的,因为您正在抛出具有相同类型和消息异常。尽管例如,如果您想要一个更具描述性的异常,则创建一个新异常可能会很有用:

catch (InvalidCastException ex)
{
    throw new ApplicationException("Unable to Sort list because at least one person has no StartDate", ex);
}

然后,该异常仍将在catch块中“发生”,但是其描述将为代码中的该位置提供有用的信息。

当然,最后您必须实际处理该异常。如果无法对personList排序,该怎么办?以原始顺序归还它们吗?退出应用程序?告诉最终用户操作失败?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在catch块中引发相同的异常

来自分类Dev

在try / catch块中引发的异常(Java)

来自分类Dev

从catch内以及finally块中引发异常

来自分类Dev

Visual Studio 2015在Try Catch块中引发异常

来自分类Dev

try块引发异常,但catch块未捕获异常

来自分类Dev

在finally块中引发异常

来自分类Dev

在finally块中引发异常

来自分类Dev

在C#中传播在finally块中引发的异常而不会从catch块中丢失异常的最佳实践是什么?

来自分类Dev

catch块中的异常对象

来自分类Dev

仅在try和catch块中没有引发异常的情况下,Java运行代码?

来自分类Dev

找出哪个实例在try-catch块中引发了异常

来自分类Dev

如何记录没有try / catch块的单元测试中引发的异常?

来自分类Dev

如何引发异常并在catch块中执行其余的业务逻辑?

来自分类Dev

.catch中的Discord.js引发异常

来自分类Dev

异常未捕获在try catch块中

来自分类Dev

区分CATCH块中的异常与失败[RAKU]

来自分类Dev

try / catch块中未处理的异常

来自分类Dev

在 try/catch 块中未捕获异常

来自分类Dev

如何从Java的try / catch块中引发异常的那一刻起恢复执行?

来自分类Dev

如何确定在catch块中捕获了哪个引发的调用?

来自分类Dev

Rubyist捕捉救援块中引发的异常的方法是什么?

来自分类Dev

不会在“ try”块中引发异常的调用方法

来自分类Dev

当Final块中的代码引发异常时会发生什么?

来自分类Dev

捕获在析构函数中引发的异常的块

来自分类Dev

我如何在C ++中的catch块中处理异常

来自分类Dev

检查是否在try..catch..finally中引发了异常

来自分类Dev

在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

来自分类Dev

在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

来自分类Dev

C#-返回后在catch块中抛出异常

Related 相关文章

  1. 1

    在catch块中引发相同的异常

  2. 2

    在try / catch块中引发的异常(Java)

  3. 3

    从catch内以及finally块中引发异常

  4. 4

    Visual Studio 2015在Try Catch块中引发异常

  5. 5

    try块引发异常,但catch块未捕获异常

  6. 6

    在finally块中引发异常

  7. 7

    在finally块中引发异常

  8. 8

    在C#中传播在finally块中引发的异常而不会从catch块中丢失异常的最佳实践是什么?

  9. 9

    catch块中的异常对象

  10. 10

    仅在try和catch块中没有引发异常的情况下,Java运行代码?

  11. 11

    找出哪个实例在try-catch块中引发了异常

  12. 12

    如何记录没有try / catch块的单元测试中引发的异常?

  13. 13

    如何引发异常并在catch块中执行其余的业务逻辑?

  14. 14

    .catch中的Discord.js引发异常

  15. 15

    异常未捕获在try catch块中

  16. 16

    区分CATCH块中的异常与失败[RAKU]

  17. 17

    try / catch块中未处理的异常

  18. 18

    在 try/catch 块中未捕获异常

  19. 19

    如何从Java的try / catch块中引发异常的那一刻起恢复执行?

  20. 20

    如何确定在catch块中捕获了哪个引发的调用?

  21. 21

    Rubyist捕捉救援块中引发的异常的方法是什么?

  22. 22

    不会在“ try”块中引发异常的调用方法

  23. 23

    当Final块中的代码引发异常时会发生什么?

  24. 24

    捕获在析构函数中引发的异常的块

  25. 25

    我如何在C ++中的catch块中处理异常

  26. 26

    检查是否在try..catch..finally中引发了异常

  27. 27

    在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

  28. 28

    在调用引发异常的方法时,如何避免在try catch块中出现伪返回?

  29. 29

    C#-返回后在catch块中抛出异常

热门标签

归档