我了解已检查和未检查的异常之间的区别。 Java编译器迫使程序员要么用try / catch块包围检查的异常,要么在方法签名中添加throw声明。

但是有时候我看到在Eclipse中,编译器只给我一个选择,用try / catch块包围语句,而不抛出它。为什么会这样呢?这是因为在继承层次结构中,类(其中包含可能产生异常的代码)位于顶部?

例如,我正在为Hadopp映射器编写映射函数:

public void map(BytesWritable key, Text value, Context context) {

String[] fields = value.toString().split("\t");

String referrer = fields[10];

context.write(new LongWritable(referrer.length()), new Text(

referrer));

}

这是一个非常简单的地图函数,我从一行中提取一个字段,并将其长度作为键,并将其本身作为值。现在,我得到一个错误Unhandled exception type InterruptedException,该错误Context.write()抛出了,Eclipse仅给了我一个选择,用try / catch块将其包围,而不是将其向上抛出层次结构。为什么会这样呢?

作为参考,您可以在此处阅读Context.write的功能签名。

谢谢。

您可以显示一些代码示例吗? 我现在想到的唯一原因是,最终您需要捕获异常并进行处理。 引发异常用于让客户端类处理异常,您可以继续引发异常,但最终需要捕获它。

您可能还会解释"仅给我包围...的选项"的意思-您如何提出此选项?

@rcook eclipse会在您编写有错误的代码时显示快速修复,并且如果您将鼠标悬停在突出显示的区域上,则会建议一些操作

@ MoayadAl-sowayegh:我已经编辑了问题以添加示例代码。

throws是方法签名的一部分。如果要定义抽象方法,则必须遵守其签名。实现时不能添加throws。

不,您可以将其删除。 您无法添加。

你是对的。 感谢您指出。

如果一个人重写了一个未声明为抛出特定检查异常的方法,而一个人正在调用一个声明为抛出一个期望处理的异常的方法,则应捕获该异常,对其进行处理,而不是将其重新抛出。 。如果不希望被调用的方法实际上会抛出所指示的已检查异常,那么应该捕获该异常,将其包装在从RuntimeException派生的某种类型中,然后抛出该异常。有些人主张使用空捕获语句,但我认为这是一种反模式。如果期望某个方法永远不会抛出某个异常,但是无论如何都会抛出该异常,这几乎意味着存在某种条件,程序员没有考虑过并且也没有准备好处理。如果该异常被默默地吞下,程序可能会盲目地去做正确的事情,但是没有理由期望在意外的异常发生后,行为会正确。

java 强制走catch_关于java:IDE强制使用try / catch包围并且不引发异常相关推荐

  1. oracle怎么条件强制走索引,如何让oracle的select强制走索引

    大多数情况下,oracle数据库内置的查询优化策略还是很成功的,但偶尔也有犯2的时候,即使有索引,也会做全表扫描,可以参考以下语句的写法,强制让select语句使用索引 CREATE OR REPLA ...

  2. [零基础学JAVA]Java SE应用部分-32.Java网络编程

    C/S程序:表示的客户/服务器程序,每次需要编写两套程序 |- MSN.QQ:一般会有两套程序,一个是服务器端,另外一个是客户端 B/S程序:表示的浏览器/ 服务器,可以理解为动态WEB,论坛 本季目 ...

  3. java 强制走catch_java – IDE强制使用try / catch包围但不抛出异常

    我理解已检查和未检查的异常之间的区别. Java编译器强制程序员使用try / catch块包围已检查的异常,或者在方法签名中添加throw声明. 但是有时我看到在Eclipse中,编译器只给我一个选 ...

  4. php自动转换和强制转换,Java数据类型转换(自动转换和强制转换)

    数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然"进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转 ...

  5. [Ubuntu 更换java版本]警告: 链接组 java 已损坏,故强制重新安装候选项 的解决方案

    安装好了openjdk8和openjdk11之后,使用命令 sudo update-alternatives --config java 更换版本时,出现错误 update-alternatives: ...

  6. arduino与java,Arduino具有与Java和C语言类似的IDE集成开发环境和图形化编程环境

    Arduino具有与Java和C语言类似的IDE集成开发环境和图形化编程环境 更多相关问题 听力原文:W: Hi, Steve, good to see you are up and around a ...

  7. Android mergeDebugResources'. Error: java.util.concurrent.ExecutionException: com.android.ide.comm

    Error:Execution failed for task ':GotSMSCode(自动获取验证码):mergeDebugResources'. > Error: java.util.co ...

  8. java中转json字符串_如何在Java中转义JSON字符串-Eclipse IDE技巧

    java中转json字符串 在Java应用程序中工作或进行JSON解析时,通常很常见的做法是从某些资源(例如RESTful Web服务)中复制粘贴JSON字符串,然后使用Jackson库解析JSON. ...

  9. Java减肥高手Xtend 捆绑Eclipse IDE

    Java 程序员在使用 Ruby 编程时会有一种解放的感觉,一种从 Java 那繁琐的语法环境进入一个无拘无束.自由国度的感觉.随着 Clojure 和 Scala 等新语言的出现,这种对比的感觉会越 ...

最新文章

  1. 为自定义控件添加页面响应事件
  2. pytorch focalloss多分类 单分类
  3. SANS研究所:7大最危险的攻击技术介绍
  4. 计算机组成原理左规右规,计算机组成原理 第四章(严军勇)-2003-2012年.ppt
  5. SQL数据库语言基础之SqlServer分组查询总结
  6. kvm实战--convirt使用
  7. Char05 Ansible 最佳实践
  8. MySQL导入与导出备份详解
  9. 为什么jar包代码与源代码不一致_Jacoco代码覆盖率工具
  10. [渝粤教育] 晋中学院 晋商大院三雕艺术 参考 资料
  11. 使用H5开发移动端app
  12. The code contains unhandled characters
  13. scl 转换gcc版本
  14. ArcGis Engine 符号
  15. 一篇文章搞定Redis Stream
  16. 【微信小程序】实现简单轮播图效果
  17. Oracle redo 与 undo
  18. 【python】腾讯云+python SDK免费发送短信
  19. 【QQ音乐Html + CSS静态笔记】
  20. TCP/IP入门详解--业内最佳

热门文章

  1. 联想y7000p win10alt+tab卡顿解决方法
  2. HDR视频的编码参数详解
  3. 计算机中文字体的独创性,计算机中文字体中单字的著作权保护研究(2)
  4. python两点之间最短距离_最短路径(图中两点间最短路径)
  5. 对蜜蜂CCD原因调查
  6. 有一页式系统,其页表存放在内存中. (1)如果对内存的一次存取需要1.5微秒,问实现一次页面访问的存取时间是多少? (2)如果系统增加有快表,平均命中率为85%,.....
  7. 前端学习-品优购实践
  8. 武汉云控系统,马云,王健林都惊艳了
  9. IIC协议下的OLED屏幕的三种寻址方式
  10. 第 4 题 打折日期交叉问题