3 回答
TA贡献1853条经验 获得超6个赞
现在是时候修改 Java 中异常处理的概念了。
首先什么是异常,每当在执行代码行时出现一些错误或说问题,它被称为异常。
例如,如果一个人将某物除以 0,那么它将给出一个异常,因为计算机无法处理未定义的实体。
另一个例子是,当您声明了一个 Scanner 以获取整数输入时,但用户输入了一个字母,因此它也会导致异常。
这里我们进行异常处理,这意味着我们将以不会导致程序关闭的方式处理异常,那些已经包含在 try 和 catch 语句中的特定行将无法正常工作,但其他行将被执行。
现在,如果我们创建了一个方法来做某事,让我们假设打印一行,并且在打印该行时发生了异常,在这里我们可以做两件事来处理异常发生的地方或抛出它。
如果我们在那个地方处理异常就可以了,如果我们抛出它,那么我们必须在调用该方法的地方捕获它。
现在有两种类型的异常 1)我们称之为未检查异常的运行时异常 2)我们称之为已检查异常的编译时异常
这两种异常都可以在类级别和方法级别进行处理,我们还可以做一件事链式异常处理。这意味着一个类将向其他类抛出异常,依此类推。
TA贡献1799条经验 获得超9个赞
我认为以下答案可以帮助您理解....
是否有更好的 throw 关键字实用性示例?
基本上Throw,Throws用于防止应用程序因抛出异常而出错或崩溃。 Throws在方法签名Throw中使用,用于防止流程出错。所以这里有一个简单的例子。
public class Test {
// here we have used "throws" in method signature
// because we are throwing new Exception(), if array is null
public static int getValue(int[] array, int index) throws Exception {
// here we are preventing application from getting
// unconditional error (NullPointer exception)
// if array is null, then we are throwing new Exception()
if(array == null) {
throw new Exception();
}
int value = array[index];
return value;
}
public static void main(String[] args) {
int[] array = null;
// here we are wrapping our getValue() function call to try catch block
// because getValue() function can throws Exception
// so we are making it safe to execute our program
try {
int value = getValue(array, 0);
System.out.println("value " + value);
} catch (Exception e) {
System.out.println("Provided array is null... so we caught the exception...");
}
}
}
如果您想更多地了解 throw 和 throws 的工作原理……那么您还需要了解异常处理(已检查和未检查)。
在给定的示例中,为什么用户选择抛出异常而不是简单地打印错误?
根据给定的示例,您的函数目的是打招呼,但如果其他函数调用greet()为空值,则没有任何理由打招呼 like Hello, null,因此他在执行语句之前抛出异常。像...
void greet(String name) {
System.out.println("Hello, " + name);
}
String myName = null;
greet(myName); // it will print "Hello, null";
TA贡献1866条经验 获得超5个赞
'Throw' 关键字用于通知调用者传递的参数无效(在这种情况下),或者通常在执行调用者调用的代码时出现问题。
考虑一个您正在编写在线购物应用程序的示例。以下是简单的事件序列:
用户滚动项目并选择一个或多个项目
物品被添加到购物车中,用户点击结帐
用户被重定向到第 3 方的付款页面,他在其中输入卡详细信息并进行付款
向用户显示成功页面
现在,在付款过程中,如果卡号不正确或用户卡中没有足够的余额,您是将错误返回给调用者(即购物应用程序)还是将其记录在控制台(在支付提供商方面)并返回响应?当然是前者,所以这只是为了让调用者知道存在错误并且他应该优雅地处理它(在我们的例子中通过在结帐时显示适当的消息)。
添加回答
举报