所谓异常就是程序在运行时出现的不正常情况;
1.异常的体系:
Throwable:
1) Error:通常指JVM出现重大问题如:运行的类不存在或者内存溢出等,这种异常是程序员无法处理的
2) Exception:在运行时运行出现的一些情况,可以通过try,catch,finally处理。比如在计算除法时把除数置0,参数传值是类型不符等。
Java异常其实是对不正常情况的一种描述,并将其封装成对象
Java在 设计异常体系时,将容易出现的异常情况都封装成了对象
下面的代码在运行时会将除数置0,在运行时Java会抛出相应的错误
1 public class Demo { 2 public static void main(String[] args){ 3 System.out.println("begin"); 4 divide(17/0); 5 System.out.println("ending"); 6 } 7 publc static void divide(int a,int b){ 8 int c= a/b; 9 } 10 }
运行时抛出的错误如下
1 begin 2 Exception in thread "main" java.lang.ArithmeticException: / by zero 3 at exception.ExceptiomDemo03.divide(ExceptiomDemo03.java:10) 4 at exception.ExceptiomDemo03.main(ExceptiomDemo03.java:6)
java.lang.Object 继承者 java.lang.Throwable 继承者 java.lang.Exception 继承者 java.lang.RuntimeException 继承者 java.lang.ArithmeticException
这里抛出的异常类型为 ArithmeticException,查看API可知这是一个继承于Exception的类。
2.处理异常的五大关键字
try ,catch,finally,throw, throws
try{ //可能出异常的代码 } catch(异常类 对象){ //处理该异常类型的语句 } [finally] { //一定会执行的代码 //catch块使用System.exit(1);除外 }
try catch finally
3.类Throwable
方法摘要 | |
---|---|
Throwable |
fillInStackTrace() 在异常堆栈跟踪中填充。 |
Throwable |
getCause()
返回此 throwable 的 cause;如果 cause 不存在或未知,则返回 |
String |
getLocalizedMessage()
创建此 throwable 的本地化描述。 |
String |
getMessage()
返回此 throwable 的详细消息字符串。 |
StackTraceElement[] |
getStackTrace()
提供编程访问由 |
Throwable |
initCause(Throwable cause)
将此 throwable 的 cause 初始化为指定值。 |
void |
printStackTrace()
将此 throwable 及其追踪输出至标准错误流。 |
void |
printStackTrace(PrintStream s) 将此 throwable 及其追踪输出到指定的输出流。 |
void |
printStackTrace(PrintWriter s) 将此 throwable 及其追踪输出到指定的 PrintWriter。 |
void |
setStackTrace(StackTraceElement[] stackTrace)
设置将由 |
String |
toString()
返回此 throwable 的简短描述。 |
下面的三个方法初学者需要掌握
String getMessage()
•获取异常信息,返回字符串。
String toString()
•获取异常类名和异常信息,返回字符串。
(图为程序调用getMessage()和toString()方法后得到的结果,可以看出getMessage()返回的是异常的信息,而toString()不仅返回了异常的信息,还返回了异常类名);
void printStackTrace()
•打印异常在堆栈中的跟踪信息;
(图为printStackTrace()返回到的结果,它返回了异常所在的位置 5、11行)