• try catch异常处理


    try catch
    clr自上而下搜索匹配的catch块,一个try块对应多个catch块,越具体的catch应该在上面,接着是她们的基类型,最后是exception类,未指定也是exception类型。如果上下顺序反了,那么具体的catch块会执行不到,编译器会报错。
    try catch 以后,如果只是处理了捕获的异常(例如记日志),没有抛出异常(throw),后续代码会继续执行
    throw是抛出一个异常,中断执行后续代码,如果一个方法可能会有异常,但你不想处理这个异常,就是用throw,谁调用了这个方法谁就要处理这个异常,或者继续抛出。
    throw和throw ex
    1 throw ex 抛出与catch捕捉到的相同的异常对象,导致clr重置该异常的起点。认为你catch到的异常已经被处理了,只不过处理过程中又抛出新的异常,从而找不到真正的错误源 try{ }catch (Exception ex){ throw ex; }
    2 throw 重新抛出异常对象,clr不会重置起点(推荐使用这个)try{} catch{ throw;}
    3 或者对异常就行重新包装,保留原始异常点信息,然后抛出
    finally:
    无论代码有没有抛出异常,finally块始终会执行。应该先用finally块清理那些已经成功的操作,还可以用finally显示释放对象避免资源泄露。
    使用了 lock,using,foreach的语句,c#编译器会自动加上try finally块,并在finally中自动释放资源
    可以在一个线程中补获异常,在另外一个线程中重新抛出异常;
    clr在调用栈中向上查找与抛出的异常对象类型匹配的catch块,没有任何catch块匹配抛出的异常类型,就会发生一个未处理的异常
  • 相关阅读:
    xxl-job 使用相关
    Kettle 使用相关
    C# 调用 WinApi 中 ShellExecute 打开 Excel 的方法
    SQL Server 日志文件清理
    windows远程桌面无法粘贴复制的解决方法
    大数据、业务多元化将是商业银行未来的发展趋势
    TeraData金融数据模型
    整理ORACLE数据库备份常用术语
    ORACLE恢复神器之ODU/AUL/DUL
    ORACLE之UTL_FILE包详解
  • 原文地址:https://www.cnblogs.com/shaner/p/6295319.html
Copyright © 2020-2023  润新知