处理错误在Java中,异常对象都是派生于Throwable类的一个实例。
Throwable有两个子类,Error和Exception。
Error描述Java运行时系统的内部错误和资源耗尽错误。
Exception有两个分支:RuntimeException和IOException。
由程序错误导致的异常属于RuntimeException;如果程序本身没问题,由I/O错误这类问题导致的异常属于其它异常。
派生于Error或RuntimeException的异常称为未检查异常,所有其它异常称为已检查异常。
编译器核查是否为所有已检查异常提供了异常处理器。
使用throws声明方法可能拋出的已检查异常,不允许在子类的throws说明符中出现超过超类方法所列出的异常类范围。
使用throw在方法中抛出异常实例。
捕获异常try
{
statement
}
catch (ExceptionType e)
{
statement
}
try
{
statement
}
finally
{
statement
}
try
{
statement
}
catch (ExceptionType e)
{
statement
}
finally
{
statement
}
分析堆栈跟踪元素
堆栈跟踪是一个方法调用过程的列表,它包含了程序执行过程中方法调用的特定位置。
- import java.util.*;
- public class HelloJava
- {
- public static int factorial(int n)
- {
- System.out.println("factorial(" + n + "):");
- Throwable t = new Throwable();
- StackTraceElement[] frames = t.getStackTrace();
- for (StackTraceElement f : frames)
- System.out.println(f);
- int r;
- if (n <= 1)
- r = 1;
- else
- r = n * factorial(n - 1);
- System.out.println("return " + r);
- return r;
- }
-
- public static void main(String[] args)
- {
- Scanner in = new Scanner(System.in);
- System.out.print("Enter n: ");
- int n = in.nextInt();
- factorial(n);
- }
- }
复制代码
|
|