Note of Chap9:
异常处理
硬件问题,资源耗尽,错误输入及程序代码编写不严谨产生异常,编译没有问题,但程序中断而不能继续运行。
eg: 字符串未被实例化,只有Null值,此时若使用其方法,将抛出空指针异常。
Throwable : Error(无法处理) , Exception
Exception : RuntimeException(系统自己处理) , IOException
RuntimeException : IndexOutOfBoundsException(索引溢出),ArithmetricException(除以零等异常运算条件)...
try{}catch{}
printStackTrace(): 获取Throwable 对象的堆栈信息
未检查异常和检查异常
未检查异常:在调用的时候可以不放在try{}catch{}中,Java会处理它。[NullPointerException, ArithmetricException]
检查异常:必须对其捕获异常,否则编译不过。[ClassNotFoundException,IllegalAccessException]
小结:检查异常必须在throws声明后才能进行throw抛出异常,而非检查异常不必。
try{}catch{}finally{} :finally语句无论如何都要执行
eg: 连接数据库时,使用完后必须对连接进行释放,否则系统会因为资源耗尽而崩溃。
方法抛出异常:
throws: 隐式抛出异常
throw: 显示抛出异常。适用于异常的再次抛出:当捕获到异常时,并不直接对它处理而是把它抛出,留给上层的调用来处理。
自定义异常:
方法定义时要在方法中声明可能产生的异常;
调用方法时要放在try-catch中;
catch要对其异常进行捕获。
异常处理
硬件问题,资源耗尽,错误输入及程序代码编写不严谨产生异常,编译没有问题,但程序中断而不能继续运行。
eg: 字符串未被实例化,只有Null值,此时若使用其方法,将抛出空指针异常。
Throwable : Error(无法处理) , Exception
Exception : RuntimeException(系统自己处理) , IOException
RuntimeException : IndexOutOfBoundsException(索引溢出),ArithmetricException(除以零等异常运算条件)...
try{}catch{}
printStackTrace(): 获取Throwable 对象的堆栈信息
未检查异常和检查异常
未检查异常:在调用的时候可以不放在try{}catch{}中,Java会处理它。[NullPointerException, ArithmetricException]
检查异常:必须对其捕获异常,否则编译不过。[ClassNotFoundException,IllegalAccessException]
小结:检查异常必须在throws声明后才能进行throw抛出异常,而非检查异常不必。
try{}catch{}finally{} :finally语句无论如何都要执行
eg: 连接数据库时,使用完后必须对连接进行释放,否则系统会因为资源耗尽而崩溃。
方法抛出异常:
throws: 隐式抛出异常
throw: 显示抛出异常。适用于异常的再次抛出:当捕获到异常时,并不直接对它处理而是把它抛出,留给上层的调用来处理。
自定义异常:
方法定义时要在方法中声明可能产生的异常;
调用方法时要放在try-catch中;
catch要对其异常进行捕获。