java - 不同风格的程序流程?

标签 java c++

我是一名计算机科学专业的学生,​​因此我知道的不多。

我最近与一位刚获得 (java) 软件开发人员工作的 friend 交谈。他告诉我,在他的工作中,有一个人对 C++ 非常有经验,但不幸的是,他每次用 java 编写代码时,都是使用 try-catch 来控制程序的流程。据我的 friend 说,这是 Java 中的错误风格。这是真的?在 C++ 和 Java 之间使用 try-catch(-finally in java) 有什么区别(如果有的话)?

最佳答案

使用 try-catch 控制程序的流程在任何地方都是错误的......异常处理就是它所说的:异常情况的处理。

当然,对于每条规则,都有十几个必要偏差的反例,但一般来说:不要控制程序流程有异常(exception)。

当您预计在正常操作环境中会引发某些异常,并且您根据这些异常做出合乎逻辑的决定时,就会使用异常来控制程序的流程。

例如用伪代码控制程序流程:

try {
  write update to file
} catch (IOException) {
  write update to alternate file
}

在这种情况下,最好在盲目执行写入之前实际测试路径是否存在。

我删除了权限检查说明,因为这是一个不好的例子

一个很好的异常处理用法:(又是伪代码)

try {
  do stuff
} catch(OutOfMemoryException) {
  fail gracefully (don't try and do something else to achieve the same result)
}

关于java - 不同风格的程序流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515618/

相关文章:

c++ - 通用消息调度库?

c++ - cin 在 Windows 上不能使用空字符串 when_GLIBCXX_DEBUG?

java - Hibernate 加入保存级联

java - 信任库是纯 Java 术语吗?

c++ - std::packaged_task 与类内的 std::bind(func, this)

c++ - 这个移动构造函数是不必要的吗

java - 使用 GWT ScrollPanel 时遇到问题

java - 如何让Jpanel 扩展到JFrame 的大小?

printing - 为什么最后一个输入是存储?

c++ - 不可访问的基类