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

我应该在程序中抛出异常还是打印出错误语句?

黄沈浪
2023-03-14

我让我的程序工作并全部完成(java)。这是一个简短而简单的工作面试程序。我通过抛出自定义异常来处理诸如不正确的输入格式之类的事情。这是最好的方法还是我应该只做一个打印声明?

共有3个答案

牟慎之
2023-03-14

这里有一个关于异常最佳实践的很好的参考。您应该确保遵循这些。

在您的特定情况下(根据您提供的详细信息),用户可能会上传/选择包含错误数据的文件。您的程序应该通过捕获任何基本的Java运行时问题并向用户返回信息(不是“线程中的异常…”,而是用户更容易阅读的内容)来处理这个问题。如果您正在检查这些字母字符,那么您应该在不引发异常的情况下处理这些字符(向用户发出错误)-除非这确实是您想要的行为。

宦兴朝
2023-03-14
  • 如果内联处理不正确的格式,代码可读吗?如果是-很好,如果不是-抛出异常并在其他地方处理
  • 您是否能够在解析不正确格式的地方正确地处理它,或者某个更通用的方法/类/模块实际上正在调用您的例程,并且应该决定该做什么?如果是后者-

一般来说-这取决于情况。如果您可以“内联”处理这种特殊情况-您可以这样做(确保它是可读的)。如果没有-抛出一个异常。

钮实
2023-03-14

异常只有在由其他代码处理时才有用。

如果您正在编写一个可重用库,您应该尽一切可能抛出一个异常
没有什么比调用第三方库更令人沮丧的了,该库将错误记录到控制台,而不是告诉您的代码。

但是,如果您正在编写一个独立的实用程序,则打印友好的错误消息比打印丑陋的堆栈跟踪更好。

最灵活的方法是编写抛出异常的可重用代码,然后在打印友好消息的main()(或独立部分的其他地方)中添加catch块。

 类似资料:
  • 我必须写一个程序来计算邮寄的东西的运费。 以下是一些规范以及练习运行应该是什么样子: 计算: 用法:发货方法成本隔夜$5*重量两天$2*重量经济$1*重量(是的,这只是=重量)数据验证在此程序中,您还需要在主方法中执行一些验证。明确地: 项目说明不能为空。物品重量必须为 运行#1:未输入项目说明: 输入项目描述: 运行#2:输入的项目重量无效: 输入项目说明:一个大框 运行#3:输入的装运方式无效

  • 你看?我应该编写多少额外的代码来向Api客户端返回正确的响应?此外,我可以忘记捕获一些可以正确报告的异常,它将作为默认的内部服务器异常返回。在controller中,我总是应该查看服务层,并检查哪些异常可以引发服务以正确处理它们。(请不要建议在java中检查异常)。 现在让我们来看看另一种解决方案: 在服务层(模型)中使用HttpStatus引发异常 就这样了。代码更少。现在我不必处理每一个可能引

  • 我们使用带有Log4j的springaop来登录我们的应用程序。我在应用程序中实现了@Before、@After、@posterhrowing建议。但我面临以下问题: 当任何异常在catch块中被捕获时,它不会调用@afterhrowing通知来打印错误堆栈跟踪。 我想为catch块中捕获的异常打印“错误堆栈跟踪”。意味着无论何时在try块中发生任何异常并被catch捕获,都应该调用一些建议来打印

  • 问题内容: 考虑以下代码: 无需添加方法签名即可编译该代码。(它与同样表现到位,太)。 我理解为什么 可以 安全地运行它,因为实际上不能将其引发在块中,因此不能引发已检查的异常。我有兴趣知道在何处指定此行为。 并非永远都不会达到目标:以下代码也会编译: 但是,如果抛出一个检查的异常,它不会像我期望的那样编译: 在JLS Sec 11.2.2中 ,它说: 一,其抛出的表达式语句(§14.18)具有静

  • 在我更好地学习Java的过程中,我一直试图理解异常处理。我不明白为什么下面的代码不能编译。 编译器消息为:

  • 我见过这样的例子 但我也认为这是一种选择 抛出异常或简单返回NotFound (IHttpActionResult实例)有什么好处吗? 我知道响应/请求管道中的某些阶段可以处理这些结果中的任何一个,就像第一个示例一样