【发布时间】:2010-08-18 18:54:37
【问题描述】:
我是一名计算机科学专业的学生,因此我知道的不多。
我最近与一位刚获得 (java) 软件开发人员工作的朋友交谈。他告诉我,在他的工作中,有一个人对 C++ 非常有经验,但不幸的是,他每次用 java 编写代码时,都是使用 try-catch 来控制程序的流程。据我的朋友说,这是 Java 中的错误风格。这是真的?在 C++ 和 Java 之间使用 try-catch(-finally in java) 有什么区别(如果有的话)?
【问题讨论】:
-
+1 对 John Weldon 的回答。请注意,Java 生态系统的一部分(并且是 Java 的特殊性)真正令人讨厌的方面之一是某些 API/框架过度使用 checked 异常。基本上强迫 API 用户通过捕捉毫无意义的无检查异常来控制他们的程序流,这些异常根本不是异常的。一些框架,比如 Spring,被正确设计并且真的不赞成这种非常糟糕的做法。 Joshua Bloch 在他的 Effective Java 中建议首选“状态测试方法”而不是不必要地抛出(未)检查的异常。
-
您好,感谢您的回答。 “基本上强迫 API 用户通过捕获毫无意义的无检查异常来控制他们的程序流程,因为这些异常根本不例外。”。那么这就是 C++/Java 之间 try-catch 的区别吗?另外,您是什么意思“已检查”异常?干杯
-
见javapractices.com/topic/TopicAction.do?Id=129。 Checked exceptions本质上是对非异常流控制异常的滥用。它们也是维护的噩梦。