首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扔和扔-这个解释正确吗?

扔和扔-这个解释正确吗?
EN

Stack Overflow用户
提问于 2019-03-27 19:45:15
回答 2查看 56关注 0票数 0

我看到了一段视频,它解释了投掷和投掷,如下所示:

抛出-用于将异常委托/传递给调用方方法。

代码语言:javascript
复制
class test{

    void child() throws filenotfoundException{ 

    //////## this method passes the exception to its caller which is main method 
        File f = new File("abc")
    }

    public static void main(String[] args) throws filenotfoundException{

    //////##this main method passes the exception to its caller which is JVM 

    }
}

因此,在上面的示例中,如果文件'abc‘不存在,并且在子方法中没有使用try catch处理异常,那么子方法将把异常传递给main方法。

由于主方法不使用try处理异常,它还抛出或将异常传递给其调用方方法(即JVM )。

是对的吗?

抛出- JVM只理解提取预定义异常的逻辑。因此,所有用户定义的异常都应该使用new Exception手动创建,然后使用throw关键字传递给JVM。

是对的吗?

EN

回答 2

Stack Overflow用户

发布于 2019-03-27 19:52:49

在方法签名中使用throws告诉每个人“是的,该方法抛出X类型的Exception,请小心”,而throw用于实际启动该Exception并中止函数的执行。

是的,取决于异常,如果您捕捉到了它,那么它可能一直泡到JVM。但是,一些Exceptions do 而非会导致执行中止。程序员可以使用try/catch块来决定是否处理它们。RuntimeException不需要在函数签名中声明。

票数 0
EN

Stack Overflow用户

发布于 2019-03-27 19:56:56

这个解释是有缺陷的。首先,写入的child()不会抛出任何东西。到目前为止,未找到的文件并不是一个例外,除非您试图打开该文件以供输入,否则不会例外。

但是,从您的代码中,子()可能会抛出异常,main()也可能会抛出异常。孩子没有,但它的定义是,它可能。

抛出是你实际上,嗯,抛出的异常。如下所示:

代码语言:javascript
复制
void child() throws FileNotFoundException {
   File f("garbage");
   if (!f.exists()) {
       throw new FileNotFoundException("the world is clean as garbage does not exist");
   }
}

main()没有try/catch块,但它可以:

代码语言:javascript
复制
void main() {
   try {
       child();
   }
   catch (FileNotFoundException e) {
       // Oh no!
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55385336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档