java中异常处理
- 很多初学者的疑问可能并不在于格式,分类及操作上面,例如如何去使用try{}catch(){},throws,throw,fianlly等,他们中大部分问题在为什么上,为什么要有异常,为什么要抛出异常而不是直接处理掉呢,为什么还要分编译期异常和运行期异常呢,等等。
那么关于为什么要有异常,并且需要抛出异常而不是直接处理掉的问题,我今天解答一下,不足之处,希望大家给予指正。
为什么要有异常呢?
**为什么要有异常呢?**有问题我直接更改,改对就好了呀!大家看,出现问题,然后更改,那是不是首先你应该知道问题在哪里,如果没有异常来报错的话,是不是无法准确的去判断问题到底在哪里呢,所以这里是不是可以认为异常的作用就是指示出问题的代码块的位置及异常的内容呢!
第二个问题,有异常我们直接处理掉,就跟代码语法错了我们改正好了就行了呀,为什么还要throws抛出或者使用try…处理呢?其实你的程序写好了,要供别人去使用,这时也许你能保证你使用时不会出错,但是你能保证别人使用时不会出错吗?例如,对日期的解析:
public static void main(String[] args) {
String str="2019-09-23 12:35:25";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
try {
Date d=sdf.parse(str);
} catch (ParseException e) {
**System.out.println("你输入的格式不正确");**
}
}
对于这个程序,你是知道str的格式必须和sdf中的格式一致,否则会出错,而其他使用者在使用这个程序时,他也许不清楚的,输入错误导致两者不一致而出错,这时如果可以提示出出错的信息(比如"你输入的格式不正确"的信息)是不是就很明确和清晰了。
- 其实对于这一类问题,就是“关于为什么它存在的问题”,我说一个很简单的思维方式,在思考这种问题的时候,你可以从“它为什么存在”转变为“假如它不存在”,就是以逆向思维的方式去考虑,这时你可能会发现,很多问题,自己就可以找到答案了。