如何定义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")
,但这会打破定义“自定义”异常的全部要点,因为我可以抛出任何这样的异常。
答案 0 :(得分:1)
异常只是扩展类Throwable
的类。通过创建扩展Throwable
或其子类之一的类来定义您自己的异常。
您可以使用throw new myError();
抛出自己的异常。
ArithmeticException
是JVM在除以零时抛出的特殊异常。寻找除以零的地方并不是例外;这是/
的工作原理。 /
运算符检查分母是否为零,然后抛出异常。
无法向+
运算符添加例如检查,以便在添加两个数字的结果为零时抛出任何异常。您必须编写自己的方法来检查并执行此操作。
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!");
}