黑马程序员_浅谈Java当中的异常处理机制

来源:互联网 发布:美女与野兽 知乎 编辑:程序博客网 时间:2024/05/23 05:10

----------- android培训java培训、java学习型技术博客、期待与您交流! -----------

异常处理机制就像人们平时可能遇到的意外情况一样,预先想好一些一些处理的办法。在程序执行代码时,若发生了异常,程序会按照预定的处理办法对异常进行处理,异常处理完成之后,程序继续运行。

Java的异常处理是通过5个关键字来实现的,即:try、catch、finally、throw、throws。

下面通过一个小实例来简单的了解一下他们具体的应用。

例:编写程序实现根据提示输入被除数和除数,计算并输出商,最后输出“感谢使用本程序!”信息。

核心代码如下:

public class Test1{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.print("请输入被除数:");
int num1=in.nextInt();
System.out.print("请输入除数:");
int num2=in.nextInt();
System.out.println("String.format("%d/%d=%d",num1,num2,num1/num2)");
System.out.println("感谢使用本程序");
}
}

相信大家都知道,要是除数为0的话,程序是会出现异常的,并且出现异常后,不仅计算和输出商的语句不会执行,就连“感谢使用本程序”的语句也不会执行。下面我们使用以下方法处理异常

(1)使用if-else语句处理异常:

import java.util.Scanner;
public class Test2{
public static void main(String[] args) 
{
Scanner in=new Scanner("System.in");
System.out.print("请输入被除数:");
int num1=0;
if(in.hasNextInt()){
num1=in.nextInt();
}
else{
System.err.println("输入的被除数不是整数,程序退出。");
System.exit(1);
}
System.out.print("请输入除数");
int num2=0;
if(in.hasNextInt()){
num2=in.nextInt();
if(0==num2){
System.err.println("输入的除数是0,请退出程序。");
System.exit(1);
}
}
else{
System.err.println("输入的被除数不是整数,程序退出。");
   System.exit(1);
}
System.out.println(String.format("%d/%d=%d",num1,num2,num1/num2));
System.out.println("感谢使用本程序!");
}
}

使用if-else进行异常处理,有以下缺点:

1、代码臃肿,加入大量的异常处理情况判断和处理代码;

2、程序员吧大量的额精力放在异常处理代码上,必然要影响开发的效率;

3、难以穷举异常情况;

4、异常处理和业务代码搅浑在一起,影响代码的可读性。

(2)使用try-catch处理异常

import java.util.Scanner;
public class Test3{
public static void main(String[] args){
try{
Scanner in=new Scanner("System.in");
System.out.print("请输入被除数:");
int num1=in.nextInt();
System.out.print("请输入除数");
int num2=in.nextInt();
System.out.println(String.format("%d/%d=%d",num1,num2,num1/num2));
System.out.println("感谢使用本程序!");
}
catch(Exception e){
System.out.println("出现错误:除数和被除数必须是整数,"+"除数不能为0。");
}
}
}

使用try-catch语句会出现以下三种情况:

1、如果try语句正常执行,不会发生异常,那么catch语句块中的所有语句都会被忽略;

2、如果try语句块中的语句发生异常,并且和catch当中声明的一箱类型匹配,把么在try当中剩下的代码会被忽略,相应的catch语句块被执行;

3、如果try当中的语句异常,并且catch当中也没有声明,那个程序直接退出;

三、使用try-catch-finally处理异常

import java.util.Scanner;
public class Test4{
public static void main(String[] args){
try{
Scanner in=new Scanner("System.in");
System.out.print("请输入被除数:");
int num1=in.nextInt();
System.out.print("请输入除数");
int num2=in.nextInt();
System.out.println(String.format("%d/%d=%d",num1,num2,num1/num2));
System.out.println("感谢使用本程序!");
}
catch(Exception e){
System.out.println("出现错误:除数和被除数必须是整数,"+"除数不能为0。");
System.ot.println(e.getMessage());
}
finally{
System.out.println("感谢使用本程序!");
}
}
}

该种方法执行时分为两种情况:

1、如果try语句块中的所有语句正常执行,那么finally语句块也会被执行;

2、try语句块发生异常,不论异常是否被catch捕捉到,finally都将执行。

特别注意:try语句块必须存在,但是catch和finally可选,但是必须存在其一。

以上便是学习Java当中的异常处理机制,希望大家好好的研究,有可能一个小小的错误,会使公司损失很多或者是开发团队困惑不已。这时候就会应了那句老话,千里之堤毁于蚁穴。希望能对大家有所帮助,我也会获益匪浅。感谢黑马程序员培训这个平台。

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima


0 0
原创粉丝点击