JAVA数字异常处理_Java异常处理
异常是程序中的⼀些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
⽐如说,你的代码少了⼀个分号,那么运⾏出来结果是提⽰是错误 java.lang.Error;如果你⽤System.out.println(11/0),那么你是因为你⽤0做了除数,会抛出 java.lang.ArithmeticException 的异常。
捕获异常
使⽤ try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发⽣的地⽅。
try/catch代码块中的代码称为保护代码,使⽤ try/catch 的语法如下:
try{//程序代码
}catch(ExceptionName e1)
{//Catch 块
}
Catch 语句包含要捕获异常类型的声明。当保护代码块中发⽣⼀个异常时,try 后⾯的 catch 块就会被检查。
如果发⽣的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递⼀个参数到⽅法是⼀样。
实例
下⾯的例⼦输⼊⼀个数字,并与100相除。当输⼊的不是数字或者输⼊0时就会抛出异常
public static voidmain(String[] args) {try{
System.out.println("请输⼊⼀个数字");
Scanner sc=newScanner(System.in);
String Line();int no=Integer.parseInt(line);//将String型转换成int型
double div=100/no;//与100相除
}catch(Exception e){
e.printStackTrace();//输出异常
}
}
运⾏结果
请输⼊⼀个数字0//当输⼊0时
java.lang.ArithmeticException: /by zero
at demo0103.Test.main(Test.java:40)
请输⼊⼀个数字
ads//输⼊的不是数字时
java.lang.NumberFormatException: For input string: "ads"at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at demo0103.Test.main(Test.java:39)unknown怎么处理
throws/throw 关键字:
如果⼀个⽅法没有捕获⼀个检查性异常,那么该⽅法必须使⽤ throws 关键字来声明。throws 关键字放在⽅法签名的尾部。
也可以使⽤ throw 关键字抛出⼀个异常,⽆论它是新实例化的还是刚捕获到的。
下⾯还是看“输⼊⼀个数字,并与100相除”
importjava.util.Scanner;public classTest {public static double Test() throws Exception{//throws表⽰没有捕获异常,谁调⽤此⽅法谁再捕获
System.out.println("输⼊数字:");int no=0;double div=0;
Scanner sc=newScanner(System.in);
String Line();
no=Integer.parseInt(s);
div=100/no;returndiv;
}public static voidmain(String[] args) {try{double d=Test();//调⽤Test⽅法,必须运⾏try/catch代码块
System.out.println(d);
}catch(Exception e){
e.printStackTrace();
}
}
程序运⾏结果与上例相同。
finally关键字
finally 关键字⽤来创建在 try 代码块后⾯执⾏的代码块。
⽆论是否发⽣异常,finally 代码块中的代码总会被执⾏。
在 finally 代码块中,可以运⾏清理类型等收尾善后性质的语句。
finally 代码块出现在 catch 代码块最后,语法如下:
try{//程序代码
}catch(Exception 异常的变量名){//程序代码
}finally{//程序代码
}
还是那个实例
public static voidmain(String[] args) {try{
System.out.println("请输⼊⼀个数字");
Scanner sc=newScanner(System.in);
String Line();int no=Integer.parseInt(line);double div=100/no;
}catch(Exception e){//System.out.println("出错了");//System.out.Message());
e.printStackTrace();
}finally{//⽆论是否发⽣异常,finally 代码块中的代码总会被执⾏。System.out.println("这块代码总会执⾏");
}
}
运⾏结果
请输⼊⼀个数字0这块代码总会执⾏
java.lang.ArithmeticException:/by zero
at demo0103.Test.main(Test.java:34)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论