java错误处理 #
java错误处理的本质是处理java的execption,这点在官方有说明,如果一个exception没有最终得到处理,那么程序将会崩溃。
错误处理的方法:try catch 或者直接在方法上throw。
两种思路:
1在越靠近底层的地方错误处理,并直接打说明信息,比如在一个a/b的地方try catch并打“除数不能为0,e”。
2在顶层直接打调用堆栈。
不管哪个思路都要注意,不要又打日志又抛出日志,会造成日志重复。错误处理最好分类,不要直接用Exception,比如sqlexception,主要是语义化比较好。
java分为unchecked和checked错误,checked错误就是吃多了jvm搞出来的,比如io读文件错误,编译器强制你处理,不然不要你过,吃多了。
错误的本质: #
什么是错误?程序没有按预期进行。
发生了错误怎么办?直接终止本次执行 or 记录错误再终止 or 回滚错误已经带来的数据操作 or 页面进行提示。
我们在程序的每一步,取值赋值,调用函数都可能出错。我用个栗子来说明:今天我要上街去买菜,然后回家做午饭。这用程序来表达:
Me me = new Me();
me.getout();
me.buy();
me.goHome();
me.cooking();
然而每一步都可能会出错,比如getout这一步,今天电梯维修,那这里错误怎么办呢?
对于c语言来说,是将返回值返回-1或者null
对于java来说,则是引入额外的错误exception机制来处理
因此错误的本质就是程序的意外情况,而try-catch的作用则是方便捕捉这种意外情况。试想如果在c语言中返回-1,那么你还要写一句if去判断一下返回结果。
回到程序本身,理论上来说,程序的每一句,每一行都可能出错。每一行都需要错误处理。but,任何人都不可能有这种闲心,所以只对预料之中的错误进行处理。
再回到java本身,综上所述,我认为:
1.只对需要处理的错误进行try-catch,比如数据库回滚,正常的可能发生的错误业务逻辑(比如找不到用户、token过期)。