• 为什么有些异常throw出去需要在函数头用throws声明,一些就不用


    throw new IllegalStateException(".");
    不用在函数头声明throws IllegalStateException
    throw new IOException(".");
    不声明throws编译不通过
    两种情况
    1、Integer.parseInt("1");这个java.lang包里面的方法,有throws NumberFormatException,但我调用的时候不用catch
    2、
    public final DefaultIoFilterChainBuilder getFilterChain() {
    throw new IllegalStateException(
    "Current filter chain builder is not a DefaultIoFilterChainBuilder.");
    }
    这个方法,我不用声明throws照样可以编译通过


    所谓checked exception和runtime exception

    checked exception告知外部用户此方法在某些情况下可能抛出这个错误,你应该捕获并处理错误以便程序在可能的情况下能够继续运行下去(当然你也可以通过throws声明将异常再往上层暴露,但终究有一层是要去catch这个异常的)。这些错误往往是可预期而且可以作为异常流来处理的。checked exception作为语法上的一种强制措施让你在代码编译阶段就必须对异常进行处理。

    比如IOException,当你打开、读取、写入文件时可能抛出这个错。你可以捕获并提示最终用户『文件操作失败,请重试』等信息,而不是任由它抛到JVM中导致当前线程挂掉。

    而runtime exception可能产生于运行时的一些不可预知的时刻,而且往往产生后没有有效的手段处理,因此不需要强制对其进行声明和捕获。

    你可以认为checked exception就是要强制你去处理这个异常(不管你throws多少层,你终归要在某个地方catch它);而runtime exception则没有这个限制,你可以自由选择是否catch。

    https://zhidao.baidu.com/question/519014936.html
  • 相关阅读:
    如何在eclipse+pydev运行scrapy项目
    QT下发布APP 文件(Mac)
    QT调用python脚本
    Python-Mac 安装 PyQt4-转
    <转载>在Sublime Text 2/3 中使用Git插件连接GitHub
    python+Eclipse+pydev环境搭建
    [codeforces1270G]Subset with Zero Sum 数学 建图
    [计算机网络]学习笔记
    [ubuntu] VMware Tools 安装详细过程与使用 ——主机和ubuntu虚拟机之间的文本和文件传递
    [codeforces1221D] Make The Fence Great Again dp
  • 原文地址:https://www.cnblogs.com/feng9exe/p/9254135.html
Copyright © 2020-2023  润新知