java中try-catch和throw的区别

java中try-catch和throw的区别,java,exception,Java,Exception,try-catch和throw子句的区别是什么。什么时候用这些 请让我知道。 try块将执行可能引发异常的敏感代码 每当在try块中抛出异常(类型为catch)时,就会使用catch块 在try/catch块之后的每一个案例中调用finally块。即使未捕获异常,或者您以前的块中断了执行流 throw关键字将允许您抛出异常(这将中断执行流,并可在catch块中捕获) 方法原型中的throws关键字用于指定方法可能会抛出指定类型的异常。当您选中了不希望在当前方法中捕获的异常(您必须处理的异常)时,

try-catch和throw子句的区别是什么。什么时候用这些

请让我知道。

  • try
    块将执行可能引发异常的敏感代码
  • 每当在try块中抛出异常(类型为catch)时,就会使用
    catch
  • 在try/catch块之后的每一个案例中调用
    finally
    块。即使未捕获异常,或者您以前的块中断了执行流
  • throw
    关键字将允许您抛出异常(这将中断执行流,并可在
    catch
    块中捕获)
  • 方法原型中的
    throws
    关键字用于指定方法可能会抛出指定类型的异常。当您选中了不希望在当前方法中捕获的异常(您必须处理的异常)时,它非常有用

资源:



另一方面,你真的应该接受一些答案。如果有人遇到与您相同的问题并找到您的问题,他/她会很乐意直接看到问题的正确答案。

Try/catch and throw子句的用途不同。因此,它们不是相互替代的,而是互补的

  • 如果您在代码中抛出了一些选中的异常,那么它应该在一些调用层次结构的try/catch代码中

  • 相反,只有当代码(您的代码或API调用)中存在抛出选中异常的throw子句时,才需要try/catch块


  • 有时,如果发生了要在调用代码块中处理的特定情况,您可能希望抛出异常,在某些情况下,您可能希望处理某个异常捕获块,并再次抛出相同或不同的异常以在调用块中处理。

    如果您执行以下示例,你会知道投掷和接球拦网之间的区别

    一般而言:

    catch块将处理异常

    抛出将错误传递给调用方

    在下面的示例中,错误发生在throwsMethod()中,但在catchMethod()中处理

    public class CatchThrow {
    
    private static void throwsMethod() throws NumberFormatException {
        String  intNumber = "5A";
    
        Integer.parseInt(intNumber);
    }
    
    private static void catchMethod() {
        try {
    
            throwsMethod();
    
        } catch (NumberFormatException e) {
            System.out.println("Convertion Error");
        }
    
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        catchMethod();
    }
    
    }
    
    尝试添加敏感代码 捕获-处理异常 最终-无论是否捕获异常,始终执行。与try-catch关联。用于关闭我们在try块中打开的资源 throw-手动将创建的异常移交给JVM。用于引发自定义异常
    throws-将异常处理的责任委托给调用方方法或main方法。

    所有这些关键字try、catch和throw都与java中的异常处理概念有关。异常是在程序执行期间发生的事件。异常会中断应用程序的正常流程。异常处理是一种用于处理异常的机制,以便可以维护正常的应用程序流。Try catch块用于处理异常。在try块中,我们编写可能引发异常的代码,在catch块中,我们编写处理该异常的代码。Throw关键字用于显式抛出异常。通常,throw关键字用于抛出用户定义的异常


    有关更多详细信息,请访问。

    其他人已经给出了详尽的答案,但如果您想了解更多信息,Oracle Java教程始终是一个很好的资源。这里是异常的Java教程,它非常详细地涵盖了您的所有问题

    在我对以下细节的有限经验中。throws是一个声明,声明可能发生但不一定发生的多个异常, throw是一个只能引发一个异常的操作,通常是非运行时异常, try catch是一个捕获异常的块,当方法中发生异常时,可以处理该异常。可以将异常理解为应该由导致异常的行为负责的责任,而不是由其上级调用方负责。
    我希望我的回答能帮助您

    try
    块包含一组可能发生异常的语句

    catch
    块将用于处理在
    try
    块中发生的异常。一个
    try
    块后面总是跟着一个
    catch
    块,我们可以有多个catch块

    最后
    块在catch块之后执行。当有多个catch块时,我们基本上使用它来放置一些公共代码。即使有异常或没有异常,最终块也会执行

    throw
    关键字将允许您抛出异常,它用于将控制权从try块转移到catch块

    throws
    关键字用于不带try&catch块的异常处理。它指定方法可以抛出给调用方的异常,而不处理自身

    //Java程序,用于演示投掷、投掷、尝试、捕获和最终操作

     public class MyExample { 
          
            static void myMethod() throws IllegalAccessException 
            { 
                System.out.println("Inside myMethod()."); 
                throw new IllegalAccessException("demo"); 
            } 
          
            // This is a caller function  
            public static void main(String args[]) 
            { 
                try { 
                    myMethod(); 
                } 
                catch (IllegalAccessException e) { 
                    System.out.println("exception caught in main method."); 
                }
                finally(){
                    System.out.println("I am in final block.");
                } 
            } 
        } 
    
    输出:

    Inside myMethod().
    exception caught in main method.
    I am in final block.
    

    @user393043,您是否查阅了文档,仍然感到困惑?或者你一开始还没看过文档?试试看@Pascal Thivent的可能副本:我想我们已经建立了OP的google foo,总体线索完整性非常有限:)@Dave是的,这就是为什么我认为像这样的低质量问题应该结束的原因,特别是考虑到我非常确定答案已经存在。TBH,我只是不知道这是不是最好的骗局。我会让OP找到一个更好的:)你没有解决抛出条款。我需要你这样做,这样当他接受我的答案时,我可以让他参考你的:)例如,如果你将“private static void throwsMethod()throws NumberFormatException”更改为“private”