当前位置: 首页 > 知识库问答 >
问题:

为什么在此代码中从不抛出IOException

红砚文
2023-03-14
public static void main(String[] args){
    double r = 0;
    System.out.println("Please enter radius of a circle");
    try{
        Scanner sc = new Scanner(System.in);
         r = sc.nextDouble();
    }catch(NumberFormatException exe){
        System.out.println("Inpvalid radius value");
    }catch(IOException exe){
        System.out.println("IO Error :" + exe);
    }

    double per = 2 * Math.PI *r;
    System.out.println(per);
}
     int radius = 0;
     System.out.println("Please enter radius of a circle");

     try
     {
             //get the radius from console
             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
             radius = Integer.parseInt(br.readLine());
     }
     //if invalid value was entered
     catch(NumberFormatException ne)
     {
             System.out.println("Invalid radius value" + ne);
             System.exit(0);
     }
     catch(IOException ioe)
     {
             System.out.println("IO Error :" + ioe);
             System.exit(0);
     }
     double perimeter = 2 * Math.PI * radius;

     System.out.println("Perimeter of a circle is " + perimeter);

共有1个答案

庾和昶
2023-03-14

Scanner sc=new Scanner(system.in);r=sc.nextdouble();都没有抛出IOException,为什么要捕获它?

第2段是另一个故事:

此对象:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 类似资料:
  • 我想了解为什么一段代码不会抛出NullPointerException。 请考虑以下代码: 方法被重复调用,同时以下代码在单独的线程中运行: 只有一个实例。 从不引发NullPointerException。 但是,当方法暂停时,即使暂停0毫秒,也会按预期引发NullPointerException: 我的理解是,在理论上,在检查和调用之间存在竞争条件。在实践中,如果不引入暂停(即从后续方法调用中

  • 我正在通过Sonarqube在代码上运行findbugs,我得到一个空指针解引用错误: 有一个语句分支,如果执行,保证空值将被取消引用。 故障代码很简单: 我想知道这怎么可能。NPE唯一可能的地方是调用x.compareTo(y)时,但如果x=null,Java将永远不会分析该分支,对吗? 这是一个bug,还是我遗漏了Java分析这条语句的方法? 更新 谢谢你的意见。最后我建议他们改成: 我发现这

  • 问题内容: 为什么这段代码不抛出?它在不使用方法的情况下修改了一段时间,这是唯一安全的删除方法。 如果将替换为,则会得到相同的结果。但是,如果我将列表更改为或只是得到了预期的异常。到底是怎么回事?我正在使用是否相关。 编辑 我找到了以下链接 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4902078 相关部分是 天真的解决方案是将协同修改

  • 问题内容: 这是我的XML文件: 我做了两个类来解析它(Fields.java和Field.java): 和 但是我得到这个例外。 我不明白为什么会出现这种异常。异常在这里: 我使用的是JDK 1.6_0.0.7。谢谢。 问题答案: 例外是由于您的JAXB(JSR-222)实现认为存在两个名称相同的事物(一个字段和一个属性)。您的用例有两个选项: 选项#1-使用以下注释字段 如果要注释该字段,则应

  • 问题内容: 在django.utils.tree.py中: 我不知道此代码示例中的功能。有人可以解释它的作用和用法吗? 问题答案: 是一个装饰器,包装了一个函数,您可以在类或(等效地)其实例上调用结果对象: 如您所见,无论是直接定义它还是使用装饰器语法定义它,以及在类或实例上调用它,总是会将该类作为其第一个参数。 classmethod的主要用途之一是定义 替代构造函数 : 现在,如果您子类化,则

  • 风格: 日志消息:10-10 13:20:01.184:E/AndroidRuntime(1417):致命异常:main 10-10 13:20:01.184:E/AndroidRuntime(1417):android。看法WindowManager$BadTokenException:无法添加窗口--android令牌。应用程序。本地活动管理器$LocalActivityRecord@411e