程序运行过程中你无法提前预知使用者的操作(虽然你在程序代码中尽可能多的考虑到可能会出异常的情况),这就好比在游戏中你永远不知道你的队友是谁一样!那么我们就需要做异常处理。这里需要说明的处理异常的目的是为了不让挂掉。
举例:输入两个值,求合;当客户不小心把小数点输入成了句号或者中文模式的点,那么就可能出错;如下:
import java.util.Scanner;
public class Mtest {
public static void main(String[] args) {
Scanner scan= new Scanner(System.in);
double a=scan.nextDouble();
double b=scan.nextDouble();
double c=a+b;
}
}
运行过程 先输入10 再输入1a
“/Applications/IntelliJ IDEA.app/Contents/jbr/Contents/Home/bin/java” -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=57678:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/liquntao/Documents/cmtech/untitled/out/production/untitled Mtest
12
1a
Exception in thread “main” java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
at Mtest.main(Mtest.java:9)
可能有些人会说,稍有点常识的人都不会这些操作呀!注意墨非定律:凡有可能的一定会。用户永远是对的,而你要做的就是减少这种错误(所以程序员要有一个好的心态)。
接下来我们要把这个异常处理掉。
1.通过try catch 异常处理
try {
Scanner scan= new Scanner(System.in);
double a=scan.nextDouble();
} catch (Exception e) {
System.out.println("输入不合法");
}
2.通过try catch 打印异常
try {
Scanner scan= new Scanner(System.in);
double a=scan.nextDouble();
} catch (Exception e) {
e.printStackTrace();
}
众所周知,异常打印是很多英文提示,可以通过throws 与throw 组合"汉化"错误信息
我们有一个需求,当程序无论是否出错最终要运行一段代码;比如上上面的代码有两种方式,要么把代码写在try 语句之后,要么在cach 语句块中加finally
public static void main(String[] args) {
try {
Scanner scan= new Scanner(System.in);
double a=scan.nextDouble();
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("程序运行结束");//方式1
}
System.out.println("sssss");//方式2
}
以上是异常处理的理解;当然可能还有一些点说的不够全面但作为初学者先理解这些,以后在项目中加深印象。