zoukankan      html  css  js  c++  java
  • 使用try Catch小结

    什么时候用try Catch

    在你觉得容易出错的地方,一般大家会给整个大的程序try Catch一下,比如某个大的工作线程

    事实上对性能影响不大,因为try Catch是为了防止不可预见的异常,不至于程序崩溃,所以不是经常中断,然后组织throw exception这样的大动作。

    任何异常都用Try Catch

    很多异常是可预见的,比如参数错误,比如事件有无订阅等等,最好用条件判断消除掉,因为try Catch不是把性能浪费在这个上面的。

    Try Catch 语句 的层次

    我习惯在调用 的第一层用try Catch,第二层其实没多大必要用,因为发生了异常,几乎程序运行的结果就不正确了,那么让异常返回到第一层,好看看是什么导致了异常,调试的时候方便。

    Try Catch 返回的信息

    最好返回比较详细的信息,这样对调试有利,现在一般用ex.TargetSite+ex.Message

    Try Finally 用于释放资源

    当有数据库连接,socket通信这些资源调用时,用try Finally 释放资源

    测试结果:

    try finally 异常会一直抛出,直到遇到一个Catch,如果一直没有,程序就会崩溃,且,try finally 语句块外的上一层语句在遇到一个Catch之前都会被跳过。

    在下一层的Catch语句里面用throw exception可以将异常抛出到上一层,但上一层 语句块外的语句仍然会被跳过。

    如果不用throw exception,那么异常将不再向上一层抛出,上一层语句块之外的语句可以被执行,上一层不会再抓异常。

    return和 throw exception不兼容

    exception 是中断当前程序,不断返回,抛出,直至遇到一个Catch才停下来,

    return 是中断当前函数,返回原调用点。

    如果前面一句是return,后面的exception就不会执行

    如果前面一句是throw exception,后面的return 也不会执行

    事实的需求也是不需要这两个兄弟兼容的,如果希望return一个值,那么在没有异常的情况下,可以return正确的值,如果发生了异常,直接throw exception ,在上一级看到异常,而发生异常是不成功的执行,返回一个值也没必要,有了exception嘛!

  • 相关阅读:
    django 模型ManyToMany 关联的添加,删除,查询
    js 购物车的数量加减,对应的总价也随机变化
    `Java`中`abstract class`与`interface`区别
    基于Netty的IdleStateHandler实现Mqtt心跳
    由MQTT topic的正则表达式匹配引发的特殊字符"/"匹配思考
    Maven项目配置Logback输出JSON格式日志
    MySql定时备份脚本
    使用tcpdump监控http流量
    Linux磁盘信息查询及删除文件操作
    基于Morphia实现MongoDB按小时、按天聚合操作
  • 原文地址:https://www.cnblogs.com/meiwlongblog/p/2455868.html
Copyright © 2011-2022 走看看