gpt4 book ai didi

java - 如何捕获 throws 子句中列出的异常

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:29 26 4
gpt4 key购买 nike

如果我不编写 try/catch 子句,如何捕获在 throws 子句中声明的异常?

  • 当我写这样的函数时

      public List<String> getTrackIds(int limit) throws NotConnectedException, UnauthorizedException {
    ...
    }

表示函数可以抛出这些异常。但是不需要在 try/catch block 中捕获它吗?我要怎么抓这种情况下有异常(exception)吗?

  • >。当我尝试调用此函数时,必须编写try/catch block 在调用中写一个 throws 子句功能。同样,如果我不写一个,我将如何捕获这些异常try/catch block ?

最佳答案

对于异常,您可以:

  • 使用try catch block 来处理它们。 (这是我的问题)
  • 在您的方法规范中使用throws 声明它们。 (不是我的问题,你自己处理)

对于后一种可能性,该方法的调用者再次具有相同的两个选项。如您所见,Exceptions 可以在程序流中一直声明为 throws。甚至 static void main(String[] args) 也可以用这些 throws 子句声明,这最终意味着您的应用程序将在声明的 Exception< 之一时崩溃 被抛出。


让我们看下面的例子:

/**
* Throws a MyException.
*/
public static void methodThrowsException() throws MyException {
throw new MyException();
}

/**
* Calls methodThrowsException(), and handles the thrown MyException
*/
public static void myMethod() {
try {
methodThrowsException();
} catch(MyException e) {
/* Do something */
}
}

/**
* Calls methodThrowsException, but does not handle the thrown MyException.
*/
public static void mySecondMethod() throws MyException {
methodThrowsException();
}

当调用 myMethodmySecondMethod 时,会发生以下情况:

public static void main(String[] args) {
myMethod(); /* No catching needed */
try {
mySecondMethod();
} catch(MyException e){
/* Catching needed */
}
}

如您所见,mySecondMethod 刚刚将捕获 MyException 的问题转移给了它的调用者。

关于java - 如何捕获 throws 子句中列出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com