gpt4 book ai didi

java - 关于创建自定义异常

转载 作者:行者123 更新时间:2023-12-01 11:30:49 24 4
gpt4 key购买 nike

Java 中的异常是如何定义的以及如何定义自己的异常?例如,我们有 ArithmeticException它禁止我们除以 0 并且不会破坏程序。

什么是try-catch使用 if-else 捕获相同潜在错误的优势逻辑?

此外,假设我不在所有整数的字段中进行操作,但特别是在 Z2 字段中进行操作。在加法下形成,其中 1+1=0 .

假设我已经预先定义了一组操作逻辑,我是否可以做这样的事情:

try {
int a = 1;
int b = 1;
int c = a/(a+b);
} catch(myError e) {
//
}

哪里myError :

public class myError extends Exception {
public myError(String e) {
super(e);
}
}

但是,try-catch 是如何实现的?子句知道它应该捕获 myError ?是什么让myError是什么?换句话说:例如 ArithmeticException 的定义是什么? ,寻找除以 0 的结果?

或者我可以throw new myError("something's wrong") ,但这会破坏一开始定义“自定义”异常的全部意义,因为我可能会抛出任何这样的异常。

最佳答案

异常只是扩展类Throwable的类。定义您自己的异常是通过创建一个扩展 Throwable 或其子类之一的类来完成的。

您可以使用 throw new myError(); 抛出自己的异常。

ArithmeticException 是 JVM 在除以零时抛出的特殊异常。寻找除以零的位置并不异常(exception);这就是 / 的工作原理。 / 运算符检查分母是否为零,然后抛出异常。

无法向 + 运算符添加检查,以便在两个数字相加的结果为零时抛出任何异常。您必须编写自己的方法来检查并执行此操作。

public int add(int a, int b) {
int result = a + b;
if (result == 0) {
throw new myError();
}
return result;
}

// Then use the add() method instead of +
try {
int a = 1;
int b = -1;
int result = add(a, b);
System.out.println(result);
} catch (myError e) {
System.out.println("The result was zero!");
}

关于java - 关于创建自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409825/

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