java捕捉了异常_Java 异常的捕获及处理

1、异常的产生以及对程序的影响

10/0 异常产生后,打印出异常信息,中断程序的继续执行。

我们要做的就是即使异常也要让程序继续正确的执行下去。

2、异常处理的格式

try{//有可能出现异常的代码

}[catch(异常类型 对象){//异常处理

} catch(异常类型 对象){//异常处理

} catch(异常类型 对象){//异常处理

}…] [finally]{//不管是否出现异常,都会同一执行的代码

}

组合try…catch 、try…catch…finally、try…finally

public class TestException

{

public static void main(String[] args)

{

System.out.println("除法开始。。。");

try

{

System.out.println("除法开始进行:"+10/0);

}catch(ArithmeticException e){

System.out.println("******出现异常了*****");

}

System.out.println("除法结束。。。");

}

}

除法开始。。。

******出现异常了*****

除法结束。。。

下面可以打印出异常的信息。(try…catch)

package exception;

public class TestException

{

public static void main(String[] args)

{

System.out.println("除法开始。。。");

try

{

System.out.println("除法开始进行:"+10/0);

}catch(ArithmeticException e){

e.printStackTrace();

}

System.out.println("除法结束。。。");

}

}

除法开始。。。

java.lang.ArithmeticException: / by zero

at exception.TestException.main(TestException.java:10)

除法结束。。。

使用:(try…catch…finally)

package exception;

/**

* 对产生的异常简单处理,打印出异常信息

* 2017-09-11

* @author Junwei Zhu

*

*/

public class TestException

{

public static void main(String[] args)

{

System.out.println("除法开始。。。");

try

{

System.out.println("除法开始进行:"+10/0);

}catch(ArithmeticException e){

e.printStackTrace();

}finally {

System.out.println("***这是finally语句,不管是否出现异常都会执行***");

}

System.out.println("除法结束。。。");

}

}

除法开始。。。

java.lang.ArithmeticException: / by zero

at exception.TestException.main(TestException.java:15)

***这是finally语句,不管是否出现异常都会执行***

除法结束。。。

除法的两个数由args[]参数决定

package exception;

/**

* 对产生的异常简单处理,打印出异常信息

* 2017-09-11

* @author Junwei Zhu

*

*/

public class TestException

{

public static void main(String[] args)

{

System.out.println("除法开始。。。");

try

{

int x = Integer.parseInt(args[0]);

int y = Integer.parseInt(args[1]);

System.out.println("除法开始进行:"+x/y);

}catch(ArithmeticException e){

e.printStackTrace();

}finally {

System.out.println("***这是finally语句,不管是否出现异常都会执行***");

}

System.out.println("除法结束。。。");

}

}

除法开始。。。

***这是finally语句,不管是否出现异常都会执行***

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

at exception.TestException.main(TestException.java:15)

【数组越界】

请解释Error和Exception的区别?

Error:是JVM错误,即:此时的程序还没有执行,如果没有执行用户无法处理;

Exception:指的是程序运行中产生的异常,用户可以处理。

3、异常的处理流程

25ffb579072807cdf5df7bce224524ac.png

用Exception处理所有的异常。

package exception;

/**

* 对产生的异常简单处理,打印出异常信息

* 2017-09-11

* @author Junwei Zhu

*

*/

public class TestException

{

public static void main(String[] args)

{

System.out.println("除法开始。。。");

try

{

System.out.println("除法开始进行:"+10/0);

}catch(Exception e){

e.printStackTrace();

}finally {

System.out.println("***这是finally语句,不管是否出现异常都会执行***");

}

System.out.println("除法结束。。。");

}

}

在开发中异常分类处理。

4、throw、throws关键字的使用

throws关键字

主要用于方法声明上,指的是当方法之中出现异常后交由被调用出处理。

package throwsTest;

class MyMath

{

public static int div(int x,int y)throws Exception{

return x/y;

}

}

public class TestThrows

{

public static void main(String[] args)

{

//调用了throws声明的方法之后,那么不管操作是否出现异常,必须使用try...catch

//进行异常的处理

try {

System.out.println(MyMath.div(10, 2));

} catch (Exception e) {

e.printStackTrace();

}

}

}

throw关键字

在程序之中可以直接使用throw手工的抛出一个异常类的实例化对象。

package throwTest;

public class TestThrow

{

public static void main(String[] args)

{

try {

throw new Exception("自己定义的异常");

} catch (Exception e) {

e.printStackTrace();

}

}

}

java.lang.Exception: 自己定义的异常

at throwTest.TestThrow.main(TestThrow.java:8)

请解释throw和throws的区别?

throw:指的是在方法之中人为抛出一个异常类对象(这个异常类的对象)

throws:在方法的声明上使用,表示此方法在调用时必须处理异常。

5、异常处理的使用标准

重要的代码模型:异常的使用格式

定义的一个div()方法,要求:这个方法在进行计算之前打印提示信息,在计算结束完毕也打印提示信息,如果在计算之中产生了异常,则交给被调用处进行处理。

package exception;

class MyMath

{

public static int div(int a,int b) throws Exception

{

int result = 0;

System.out.println("计算开始。。。");

try{

result = a/b;

}catch(Exception e){

e.printStackTrace();

}finally {

System.out.println("计算结束。。。");

}

return result ;

}

}

public class TestDemo

{

public static void main(String[] args)

{

try {

System.out.println(MyMath.div(10, 0));

} catch (Exception e) {

e.printStackTrace();

}

}

}

计算开始。。。

java.lang.ArithmeticException: / by zero

at exception.MyMath.div(TestDemo.java:10)

at exception.TestDemo.main(TestDemo.java:24)

计算结束。。。

0

请解释Exception和RuntimeException的区别?请列举出几个你常见的RuntimeException;

使用定义的异常必须要被处理,而RuntimeException异常可以选择性处理。

常见的RuntimeException:ArithmeticException、NullPointerException、ClassCaseException

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值