下面是关于Java异常级别与捕获的详细攻略:
异常级别
Java异常的级别(或称之为异常的分类)按照继承体系分为三个大类:Error、Exception、RuntimeException。其中Error和RuntimeException是Java语言中最常见的两种异常。下面我们分别来介绍这三类异常的特点:
Error
Error是Java中的严重问题,一般都是由于虚拟机的系统级错误导致。比如虚拟机磁盘空间已满、内存空间不足,或者是虚拟机启动时出现的类加载错误等。由于Error的类型比较多,一般情况下推荐一旦出现,我们就尝试将程序关闭或者通过各种手段优化解决。
下面是一个示例代码,我们来看一下如果程序出现Error的情况,Java会如何处理:
public class ErrorDemo {
public static void main(String[] args) {
try {
String s = null;
s.toString();
} catch (Error e) {
System.out.println("程序出现错误!");
}
}
}
在上面的代码中,我们使用了toString()
方法对一个null对象进行操作,这会导致程序抛出java.lang.NullPointerException的错误。我们在一个try-catch块中对程序错误进行了捕捉,并输出了一个提示信息。
Exception
Exception是Java语言中最常见的异常类型,它包括了常见的一些程序运行错误以及用户输入错误等各种情况。Exception 的类型非常多,有很多内置的异常类供开发者使用。我们一般都是通过捕捉异常信息来定位和解决程序出现的功能性问题。
下面是一个针对java.lang.ArithmeticException异常的示例代码:
public class ExceptionDemo {
public static void main(String[] args) {
try {
int i = 100 / 0;
} catch (Exception e) {
System.out.println("程序出现异常!");
e.printStackTrace();
}
}
}
在上面的代码中,我们对一个整数类型的变量i进行了赋值,但是对于0进行的除法操作,Java会抛出java.lang.ArithmeticException的异常。我们在一个try-catch块中对程序异常进行了捕捉,并输出了一个提示信息及堆栈信息。
RuntimeException
RuntimeException属于Exception的一种子类,它表示的是应该反应程序问题的一种运行时异常。和Exception不同的是,Java编译器不会强制我们进行异常处理,开发者可以根据自己的实际情况,选择是否对RuntimeException进行捕捉。
下面是一个针对java.lang.NullPointerException异常的示例代码:
public class RuntimeExceptionDemo {
public static void main(String[] args) {
String s = null;
try {
s.toString();
} catch (RuntimeException e) {
System.out.println("程序出现RuntimeException异常!");
}
}
}
在上面的代码中,我们通过对一个null对象进行toString()
操作,Java会抛出java.lang.NullPointerException的异常。不同于Exception,在RuntimeExceptionException的catch块中,我们给出了一个提示信息,但是并没有输出堆栈信息。
异常捕获
异常捕获是指我们通过代码捕获程序在运行时可能出现的异常信息。在前面的章节中,我们已经讲解过了Java中try-catch块的使用方法。下面让我们来看一下try-catch块的常用组合方式:
单捕获块
下面是一个展示单catch块的Java代码:
public class SingleCatchDemo {
public static void main(String[] args) {
try {
int[] arr = {1,2,3};
System.out.println(arr[10]);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们在一个try块中进行了数组操作并访问了数组的第十个元素。然而,由于数组只有三个元素,这个程序会抛出一个ArrayIndexOutOfBoundsException的异常。我们使用一个catch块来捕获该异常,并打印出了异常的堆栈信息。
多捕获块
下面是一个展示多catch块的Java代码:
public class MultiCatchDemo {
public static void main(String[] args) {
try {
int a = 50/0;
String s = null;
s.length();
} catch (ArithmeticException e) {
System.out.println("发生了ArithmeticException");
} catch (NullPointerException e) {
System.out.println("发生了NullPointerException");
} catch (Exception e) {
System.out.println("发生其他未知异常");
}
}
}
在上面的代码中,我们在一个try块中进行了两个操作。第一个操作会抛出一个ArithmeticException的异常,第二个操作会抛出一个NullPointerException的异常。我们使用三个catch块来捕捉可能出现的异常,并按照异常级别进行了分别处理。
以上就是关于Java异常级别与捕获的完整攻略,希望能对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java异常级别与捕获的示例代码 - Python技术站