Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在实际项目中处理运行时异常_Java_Exception Handling_Runtimeexception - Fatal编程技术网

Java 如何在实际项目中处理运行时异常

Java 如何在实际项目中处理运行时异常,java,exception-handling,runtimeexception,Java,Exception Handling,Runtimeexception,最近我参加了一次面试,面试官问我关于异常处理的问题。我给出了一个典型的答案。然后他问我你应该处理运行时异常吗?我说不,然后有人问如果我们得到一个NullPointerException,你会把它发送给用户吗 我弄糊涂了。所以我要寻找的是,我们是否应该捕获运行时异常 如果是,我们怎么做 如果没有,那么我们是否向用户显示java.lang.nullpointerException 提前感谢。处理任何可预测的运行时异常的最佳方法是捕获它,并生成用户友好的信息,说明可能的原因以及系统希望用户下一步做什么

最近我参加了一次面试,面试官问我关于异常处理的问题。我给出了一个典型的答案。然后他问我你应该处理运行时异常吗?我说不,然后有人问如果我们得到一个NullPointerException,你会把它发送给用户吗

我弄糊涂了。所以我要寻找的是,我们是否应该捕获运行时异常

  • 如果是,我们怎么做
  • 如果没有,那么我们是否向用户显示java.lang.nullpointerException

  • 提前感谢。

    处理任何可预测的
    运行时异常的最佳方法是捕获它,并生成用户友好的信息,说明可能的原因以及系统希望用户下一步做什么

    假设您有一个为用户提供基于UI的计算器的项目。现在,如果用户输入“零除法”指令,理想情况下会发生什么?假设您没有检查0分母(当然这是不可取的),您的程序将抛出算术异常。你该怎么处理?您应该捕获它并让用户知道他输入了系统不期望的输入,即

    You cannot divide by zero. Please enter a non zero denominator!
    
    如果它是一个API,并且将被另一个应用程序使用,那么我要做的是将运行时异常包装成一个定制的API特定异常并从那里抛出,以便实现者可以使用该信息并以适当的方式处理它。e、 g

    public int divide() throws InvalidArgumentsException
    

    一般用户不会知道NullPointerException是什么,或者它是如何发生的/为什么发生的。通常,您会向用户显示一个更友好的错误,可能是他们可以提供的错误代码,以帮助识别错误


    应用程序还可以将NullPointerError与堆栈跟踪一起保存到文件中,以便开发人员可以准确地看到错误发生的位置。

    通过实现以下命令,可以在应用程序中捕获
    RuntimeException
    类:

    此方法应捕获所有未捕获的
    异常
    ,甚至是由其他
    线程
    实例引发的异常,因此只使用一个实现是安全的


    你的问题是:

    我们是否应该捕获运行时异常

    视情况而定;您不希望整个银行应用程序服务器崩溃,仅仅因为它在文件系统中找不到文件


    同时,
    运行时异常
    通常会发生,因为代码中存在缺陷
    NullPointerException
    ,以及许多其他异常都可以避免…

    如果不希望应用程序崩溃,应该避免。我建议您仔细阅读异常处理检查的基础知识,我不需要向用户显示发生了NPE。但是如何向用户显示友好的错误呢?NPE只是一个例子。可以有N个运行时异常。那么我如何在代码中实现同样的功能呢?
    Thread.setDefaultUncaughtExceptionHandler(Thread t, Throwable e) -> {
    
        // log Exception to file, send to server ecc, you can check which exception was thrown and act accordingly...
    
        // you can still re-throw the exception here as if this block did not exist 
    
    });