首先我们用一个例子来说明一下:
public static void main(String[] args) { // TODO 自动生成的方法存根/*/ * 处理异常的办法 * try... catch...finally * throws * */ int a = 10; int b = 2; System.out.PRintln(a / b); System.out.println("结束"); }}输出结果是:
5 结束 但是我们把代码稍微改变一下:
public static void main(String[] args) { // TODO 自动生成的方法存根 /* * / 处理异常的办法 try... catch...finally throws * */ int a = 10; // int b = 2; int b = 0; System.out.println(a / b); System.out.println("结束"); }}通过这样我们发现程序没报错 ,但是运行结果如下:
java.lang.ArithmeticException
这时候程序就出现了异常情况,我要改怎么处理呢?
/* * / 处理异常的办法 try… catch…finally * throws * */
public static void main(String[] args) { // TODO 自动生成的方法存根 /* * / 处理异常的办法 try... catch...finally throws * */ int a = 10; // int b = 2; int b = 0; try { System.out.println(a / b); } catch (Exception e) { System.out.println("除数不能为0!"); } System.out.println("结束"); }}这样呢,我们输出结果:
除数不能为0! 结束
我们声明的一点是,在catch代码里必须要有声明或者其他解决异常问题的方案或者提示,否则添加这个try…catch就没有了任何的意义! 我们到底该如何处理异常:如果改功能内部可以将问题处理,用try…catch,如果处理不了交由调用者处理,这是用Throw
异常的处理: JVM的默认处理 把异常的名称,原因,位置等信息输出在控制台,但是程序不能继续运行。 自己处理 a:try…catch…finally 自己编写处理代码,使得后面的程序可以继续执行。 b:throws 把自己处理不了的,在方法上声明,告诉调用者,这里是有问题的!
Throw和Throws的区别。 1.Throws使用在函数上,Throw使用在函数内。 2.Throws后面跟异常类,可以跟多个,用逗号区别,Throw后面跟的是异常对象。
新闻热点
疑难解答