有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何知道失败的原因?

我怎样才能知道应用程序是否因用户输入或内部错误而崩溃

如何从用户的角度确定处理这些异常的最佳方法


共 (2) 个答案

  1. # 1 楼答案

    尝试将代码放入Try-catch块。这将允许您捕获异常(错误),然后将堆栈跟踪写入控制台。从控制台中的堆栈跟踪中,您将能够在代码中找到一行bug

    try {
        your code here
    } catch (Throwable t) {
        t.printStackTrace();
    }
    
  2. # 2 楼答案

    我们肯定是在说Java吗?从越界访问数组到溢出缓冲区,几乎每件事都会引发错误

    这里抛出的异常在一个名为unchecked exceptions的类中,它们甚至不一定要被捕获,因为它们是程序员错误(bug)的结果,而不是用户输入错误

    这是判断是否是输入错误的一种方法。如果抛出的异常是未经检查的异常,那么错误就在代码中。您可以在软件的入口点对未经检查的异常进行一个理智的捕获,以便作为最后手段尝试确定发生了什么,可能会转储堆栈跟踪以帮助用户报告错误

    如果崩溃甚至没有抛出(例如:segfault),那么它发生在本机代码而不是Java代码中,并且仍然不是用户的错(尽管它可能是您正在使用的第三方库的错,而不是您自己的错,例如,尽管开发人员有责任对此采取措施)

    如果您处理的是用户输入错误,那么您希望抛出一个已检查的错误并捕获它。在这种情况下,用户甚至不会看到崩溃

    从用户的角度来看,任何未捕获的异常都是程序员错误。如果软件无法从任何类型的异常(无论是否基于输入)中正常恢复,那么从技术上讲,责任在于开发人员。如果一个软件因为我不小心在一个需要正数的字段中输入了负数而崩溃,那不是我的错。即使试图加载一个损坏的文件也不一定会导致软件崩溃,所以也许你的面试官在寻找一个负责任的开发人员的答案,他从不认为任何崩溃都是用户的错

    当我们谈论崩溃时,它不在用户输入与bug之间。这一直是生产质量商业软件中的一个缺陷

    如果是在代码域中,那么会有不同类别的检查异常,这些异常基于异常但不是意外的用户输入错误(例如:文件I/O错误),而不是完全意外的错误(未检查的异常),在控制代码和处理异常时,可以区分这些错误