如何在 java 中实现 Erlang 的 "Let it crash" 概念

How to implement Erlang's "Let it crash" concept in java

我一直在寻找关于这个概念/设计模式/它叫什么的任何简单示例,我想在 java 中看到任何简单示例,我想知道是否可以应用这个概念是否在 android 应用程序中,我已经在 android 中使用演员模型但我想将 "Let it crash" 模式应用于它,我在哪里可以找到任何 java 示例或解释...我总是看到没有代码甚至 UML 的高级讨论

我什么都没试过,因为我无法想象它是如何完成的!

我在 Java 的几年(2003-2009 年)中有办法做到这一点。然后我发现了 Erlang 是如何工作的,并且从那时起就一直在编写 Erlang。如果我必须再次编码 Java,我肯定会使用这种模式。

我在 Java 中对一些主要网站项目的处理方式是这样的:

  1. 尽可能避免 try-catch 块。让代码在 NullPointerExceptions 和 RuntimeExceptions 的类似子类上崩溃。
  2. 所有从 RuntimeException 继承的异常都是 "OK" 并且会在运行时产生崩溃。只需确保它们已记录(在服务器上)或以某种方式处理(在客户端中)。在一个中心位置执行此默认崩溃处理以避免代码重复。
  3. 有时 Java 编译器会强制您处理捕获的异常。然后在 RuntimeException 中重新抛出捕获的异常。

这是一个典型的例子,它捕获了编译器强制你处理的已检查异常 java.sql.SQLException 并且作为 RuntimeException 进行追溯。

try {
  your code here...
} catch (SQLException e) {
  throw new RuntimeException(e);
}

这很有魅力。保留完整的堆栈跟踪,不会丢失任何信息。编译器很高兴,您也很高兴,因为您已将 Java 检查的异常转换为 RuntimeException。

  1. 您自己定义的所有异常以及您在代码中明确抛出的所有异常都应继承自 java.lang.RuntimeException。

祝你好运!

这种错误处理方法使我的 Java 代码库变小了很多,它确实变成了 "Let it crash"。不完美,但好多了。