我的程序正在运行并且全部完成(java)。这是一个简短而简单的求职面试程序。我通过抛出自定义异常来处理诸如不正确的输入格式之类的事情。这是最好的方法还是我应该做一个打印声明?
4 回答
只有当它们将由其他代码处理时,异常才有用。
如果您正在编写一个可重用的库,则无论如何都应该抛出异常。
没有什么比调用第三方库更令人沮丧的了,该库将错误记录到控制台而不是告诉您的代码。
但是,如果您正在编写一个独立的实用程序,打印友好的错误消息比打印丑陋的堆栈跟踪更好。
最灵活的方法是编写抛出异常的可重用代码,然后catch
在(或独立部分的其他地方)添加块以main()
打印友好消息。
- 如果您处理不正确的内联格式,代码是否可读?如果是这样 - 很好,如果不是 - 抛出异常并在其他地方处理它
- 您是否能够在解析它的地方正确处理不正确的格式,或者一些更通用的方法/类/模块实际上正在调用您的例程并且应该决定做什么?如果是后者 -> 抛出异常
一般来说 - 这取决于。如果您可以“内联”处理这种特殊情况 - 您可以做到(确保它是可读的)。如果不是 - 抛出异常。
这是关于异常最佳实践的一个很好的参考。你应该确保你遵循这些。
在您的特定情况下(根据您提供的详细信息),用户可能会上传/选择包含错误数据的文件。您的程序应该通过捕获任何基本的 Java 运行时问题并将信息返回给用户来处理这个问题(不是“线程中的异常......”,而是对用户来说更具可读性的东西)。如果您正在检查这些字母字符,那么您应该只处理它(给用户一个错误)而不抛出异常 - 除非这确实是您想要的行为。
当程序无法以正常正确的方式运行时,会导致异常。
当您从 j2se 发展到 j2ee 时,异常会变得更加复杂并且数量会增加。
对于独立应用程序
- 如果您的应用程序只是一个非常简单的计算器,那么您可能会完全忘记异常,因为您的用户输入将被过滤,少数异常之一将被零除
- 如果您的应用程序是一个简单的实用工具,例如屏幕截图,那么如果您的文件无法保存(文件 i/o 处例外),那么您只需终止所有任务并向用户显示一些错误消息。
- 对于示例2的高级项目,您需要将图像保存在临时文件中,并在问题得到纠正后执行文件保存。
对于企业级的分布式应用程序, 这里涉及事务(相互关联的活动)。这里有时还需要给用户一个简单的消息,并且还需要处理(对相关事务进行必要的更改)异常!
如果应用程序分布在许多国家/地区,则一个牵引力中的异常需要在另一个国家/地区的另一台服务器中进行更改,这需要可选地结合使用 JMS API 的某些东西(在应用程序内发送消息)
JPA(Java 持久性 API)在发生异常时隐式回滚数据库,并为相关事务提供这样做的便利。但是回滚仍然只影响数据库而不影响实例变量(对象值)
并且在任何时候您都不想让用户阅读您的确切堆栈跟踪,该堆栈跟踪在行号处显示错误.....