A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

try ---catch---finally
//1.把可能发生异常的代码用try块包起来,当程序在某条语句发生异常后,会直接跳转到catch块中,异常代码后的代码都不会执行了
//2.只有当try块中发生异常后,程序才会跳转到catch块中执行,如果不发生异常,catch块的代码不会被执行
//3.finally中的代码无论程序是否发生异常,均会执行,所以一般会把一些释放内存、释放资源的代码放到finally中,
    这样会保证这些代码一定会执行
//4.即便在try块中有return语句,finally块中的代码还是会执行,finally块中不能包含return语句

catch块的三种写法:
1.catch块中第一种写法,这种写法可以捕获所有的异常
            catch
            {
                Console.WriteLine("异常了~~~~");
            }
2.catch块中第二种写法,如果参数类型为Exceotion
            表示可以捕获所有的异常
            catch(Exception ex)
            {
                Console.WriteLine("异常详细信息:{0}",ex.Message);
            }
3.catch块中第三种写法,如果参数类型为NullReferenceException,表示只能捕获空指针异常,
                       这种写法只能捕获特定的异常,其实就是对不同的异常分别捕获,可以对不同的异常单独处理
         
            catch (NullReferenceException ex)
            {
                Console.WriteLine("异常详细信息:{0}", ex.Message);
            }
            catch (DivideByZeroException ex)
            {
                Console.WriteLine("又异常了:{0}", ex.Message);
            }
    // *****注意事项:捕获所有异常的catch不能写在具体异常之前
            catch(Exception ex)
            {
                Console.WriteLine("异常了~~~:{0}",ex.Message);
            }

手动抛出自己的异常用 throw new Exception("哈哈哈,抛出异常了!");
直接写throw;只能用在catch块中,表示不处理异常,向上抛出异常
建议:通过逻辑判断(if-else语句)减少异常的发生的可能性
在多级方法嵌套的时候,如果发生了异常,则会终止所有相关方法的调用,并且释放相关的资源

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马