Java中异常处理的示例
在这里,我们将分析一些异常处理" title="异常处理">异常处理代码,以更好地理解这些概念。
尝试在以下代码中查找错误(如果有)
代码1:
public class prog {public static void main(String arg[]) {
try {
int a = 10, b = 0;
int c = a / b;
} catch (RuntimeException e) {
System.out.println(e.getMessage());
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
}
}
}
输出结果
/prog.java:8: error: exception ArithmeticException has already been caught} catch (ArithmeticException e) {
^
1 error
说明:
当使用多个catch块时,我们必须确保以与异常继承相反的顺序捕获异常。这意味着必须在最一般的例外之前捕获最特定的例外。必须在RuntimeException之前捕获ArithmeticException。
代码2:
public class prog {public static void main(String arg[]) {
try {
throw new Integer(25);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
输出结果
/prog.java:4: error: incompatible types: Integer cannot be converted to Throwablethrow new Integer(25);
^
Note: /prog.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
说明:
我们只能抛出Throwable类或继承该类的类的对象。Integer类不会扩展Throwable类,因此,我们不能抛出Integer类的对象。类似地,“ throw 25”的陈述是错误的。不像C ++,我们可以抛出对象,而在Java中,我们只能抛出那些继承Throwable类的对象。
代码3:
public class prog {public static void main(String arg[]) {
err ob1 = new err();
ob1.func();
}
}
class err {
void func() {
try {
System.out.println("Inside try");
} finally {
System.out.println("Inside finally");
}
}
}
输出结果
Inside tryInside finally
说明:
不必将catch块附加到try块。try语句可以直接与finally语句关联。
代码4:
import java.io.*;public class prog {
public static void main(String arg[]) {
err ob1 = new err();
ob1.func();
}
}
class err {
void func() throws IOException {
try {
System.out.println("Inside try");
} catch (Exception e) {
System.out.println("Inside catch");
} finally {
System.out.println("Inside finally");
}
}
}
输出结果
/prog.java:6: error: unreported exception IOException; must be caught or declared to be thrownob1.func();
^
1 error
说明:
如果说一个函数抛出任何检查的异常,则调用者必须捕获该检查的异常。语句“ void func()
throws IOException ”清楚地表明,该函数可以抛出必须由调用方处理的IOException。可以通过在try-catch块中包含' ob1.func() '语句来纠正该错误。
代码5:
import java.io.*;public class prog {
public static void main(String arg[]) {
err ob1 = new err();
ob1.func();
}
}
class err {
void func() throws RuntimeException {
try {
System.out.println("Inside try");
try {
int[] a = new int[10];
int c = 10;
a[c] = 0;
}
} catch (Exception e) {
System.out.println("Inside catch");
}
}
}
输出结果
/prog.java:14: error: 'try' without 'catch', 'finally' or resource declarationstry {
^
1 error
说明:
每个try块必须具有关联的catch或finally块。在代码中,内部try块没有关联的catch或finally块。
以上是 Java中异常处理的示例 的全部内容, 来源链接: utcz.com/z/350144.html