12.1 语法错误、逻辑错误和异常

代码有三种错误:
1.语法错误。语法错误是最容易识别的,语法错误在编译后会标示出错误,java的编译器里直接显示红色,有语法错误的代码是无法运行的。例如这个缺少了一个分号:
 2.逻辑错误。代码没有问题,但是运行的结果不对,这类就是逻辑错误。例如排序,运行完发现排序失败,这类就是逻辑错误。这类问题需要通过阅读代码、调试来解决,发现代码的逻辑问题,例如并且写成了或者,写少了条件等等。 例如这个条件是无法判断i是偶数的:
 3.异常。代码在某些输入条件下运行没有问题,但是某些条件下就会崩溃。例如: 计算a除以b,绝大部分情况都是正常的,直到出现b的值是0这样的情况;在连接数据库的时候,由于网络问题出现超时;字符串转换成数字的时候,"123"变成123的时候,输入一个字符串,然后转换成数字:
String str=new Scanner(System.in).next();
int i=Integer.parseInt(str);
假如输入的字符串不是数字的时候,上面的代码就会出异常。而且你是无法控制输入者的输入内容的,也就是说有可能是规范的字符串,也有可能是无法转换成数字的字符串。例如输入12a,转换成数字的时候,就出错了:
我们都不希望看到这样的信息,然而看到了也不要一筹莫展:
1.java.lang.NumberFormatException表示这个异常的类型
2.后面显示的是出异常的代码在哪一行,这里显示的是调用栈的错误,例如A函数在35行调用了B函数,当B函数的23行代码出异常的时候,显示的错误栈就是A 35和B23,这里只需要从上到下找到第一个你写的代码,就是出错的地方。(这里我们假定java的代码或者第三方的包都没有bug),对上图来说,就是com.hsmg.system.Common.main函数的247行,com.hsmg.system是包,类名是Common