猿问

为什么需要创建很多不同的异常类型?

大多数情况下,如果我想在某个关键点终止程序的执行,我只需创建一个带有一些信息性消息的 RuntimeException:

throw new RuntimeException("ERROR: this is wrong! Fix it first!")

在 Java 中有许多不同的内置异常类型,并且书籍还教授如何创建自己的自定义异常类型。那真的有必要吗?从实用的角度来看,对于大多数用途来说,RuntimeException 是否足够?


守着一只汪
浏览 228回答 3
3回答

繁花如伊

大多数时候,如果我想在某个临界点终止程序的执行大多数时候我不想终止我的应用程序,但我想从异常中恢复以继续执行。通常,您不必定义自己的异常,因为您可以(技术上)仅使用例如。Exception和RuntimeException而创建自己的异常类allowes您精确graing这种异常醒目。例如try{   myService.doSomething();}catch(MyCustomException){ //handle custom exception here- eg.  retunr Constants.DEFAULT_RESPONSE;}catch(RuntimeException e){  log.error("Unknown Error",e);  return null;}所以在这种情况下,我允许自己从我的服务方法抛出的异常中恢复,但同时我登录所有其他异常(返回null不是最佳实践)

慕雪6442864

我强烈反对使用泛型RuntimeException和Exception. 这是为了让我们能够以不同的方式处理不同的异常。例如,如果我捕获了一个RuntimeException,如果由于输入错误(这样我们可以告诉用户修复他们的输入)、磁盘错误(这样我们可以提醒运营团队以便他们可以替换) 或空指针(这显然是一个错误)。抛出和捕获泛型RuntimeException使这比真正需要的更困难。

Smart猫小萌

具有不同类型异常的一种方法是,您可以定义程序应如何响应抛出的特定异常。try {    // code that may throw several types of exceptions} catch (Exception1 e) {    // handle Exception1} catch (Exception2 e) {    // handle Exception2} catch ...通过这种方式,正在运行的程序可以从异常中恢复并继续运行。
随时随地看视频慕课网APP

相关分类

Java
我要回答