C#异常

作者: 晓龙酱 | 来源:发表于2017-09-18 10:31 被阅读13次

使用原则:

  • 正常业务逻辑,不要使用异常来处理
  • 不要总是尝试去捕获或引发异常,而应该允许异常向调用堆栈往上传播
  • 只有在出现资源问题,严重错误时才引发异常
  • 如果向用户抛出异常,最好包装一下,引发一个含有友好信息的新异常
  • 抛出新异常,需要将原有异常附加进来,便于查错

在try finally中返回数据

  • 若在try中返回值类型数据,则在finally中对数据的操作无效
  • 若在try中返回引用类型数据,则在finally中对数据操作有效
  • 建议在try finally之外返回数据,这样在finally中修改值类型,引用类型数据都会生效

异常嵌套

  • 不恰当的异常嵌套,会导致打印出的堆栈不完整
  • 不要在底层捕获不会处理的异常
  • 在最上层捕获异常
// Wrong
try
{
    Method1();
}
<font color=red>catch(Exception err)</font>
{
    // 这里没有处理错误,而直接继续转发这个错误,会导致这之前堆栈信息丢失
    <font color=red>throw err</font>;
}
// correct
try
{
    Method1();
}
<font color=red>cache</font>
{
    <font color=red>throw;</font>
}

捕获未处理的异常

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

static void CurrentDomain_UnhandleException(object sender, UnhandledExceptionEventArgs e)
{
}

使用自定义异常

  • 方便调试
  • 包装若干异常
  • 便于调用者编码,根据业务划分异常
  • 引入新异常类

相关文章

  • 11.3c#总结

    自定义异常 主要讲从几个方面学习异常处理,了解什么是异常,以及C#的异常处理机制,了解C#常用的异常类,掌握try...

  • 自定义异常

    ASP.NET MVC自定义异常处理 C#结构化异常之自定义异常 在C#中所有的异常类型都继承自System.Ex...

  • 异常处理笔记

    #异常处理 知识点 try—catch C#语言的异常...

  • 菜鸟文档 C#教程(一)

    菜鸟文档 C#教程 [toc]只记录与C++不同处 初级语法 C#运算符is 判断类型as 无异常强制转换 C#循...

  • C#异常

    使用原则: 正常业务逻辑,不要使用异常来处理 不要总是尝试去捕获或引发异常,而应该允许异常向调用堆栈往上传播 只有...

  • C# 异常

    1.System.StackOverflowException: 用递归和for循环很容易出现

  • C#异常和异常处理

    参考文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/progr...

  • 11月3日C#学习总结

    今天学习了异常处理机制,主要就是C#常用的异常类、try、catch和finally关键字处理异常和throw关键...

  • 异常处理-C#

    ​ 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。 因此处理这种错误,就称为异常...

  • C#异常处理

    try:一个try块标识了一个将被激活的特定的异常的代码块。后跟一个或多个catch块。 catch:程序通过异常...

网友评论

      本文标题:C#异常

      本文链接:https://www.haomeiwen.com/subject/uhbvsxtx.html