java异常
西二旗是一个恐怖的地铁站,光排队得排很久。
只要写代码就存在bug,唯一一个不出bug得方法就是不写代码。
异常:在程序的运行过程中,出现的不正常情况叫做异常.
注意:1.相同的代码在运行的时候,根据输入的参数或者操作的不同,有可能会发生异常,有可能不会发生异常,应该再写带过的过程中尽可能的保证代码的正确性,不要到处写bug。
2.如果要解决代码中出现的异常,需要添加非常复杂的逻辑来进行判断,会使代码变得非常复杂,臃肿,因此,推荐大家使用异常机制来处理程序运行中出现的问题。
3.程序的运行过程中,如果出现问题,会导致后面的代码会无法执行,而使用异常机制之后,可以对异常情况进行处理,同时后续的代码会继续执行,不会中断整个程序。
4.在异常的处理过程中,不要只是简单的输出错误,要尽可能的将详细的异常信息进行输出,e.printStackTrace()打印异常的堆栈信息,可以从异常信息的最后一行开始追踪,寻找自己编写的java类; 还可以 e.getMessage(),
异常处理的方式:
1.捕获异常
finally 包含哪些处理逻辑:
1.IO流的关闭操作一般置在finally中
2.数据库的连接关闭操作设置在finally中
(名士兵教育的)总结:
try语句在返回前,将其他所有的操作执行完,保留好要返回的值,而后转入执行finally中的语句,而后分为以下三种情况:
情况一:如果finally中有return语句,则会将try中的return语句”覆盖“掉,直接执行finally中的return语句,得到返回值,这样便无法得到try之前保留好的返回值。
情况二:如果finally中没有return语句,也没有改变要返回值,则执行完finally中的语句后,会接着执行try中的return语句,返回之前保留的值。
情况三:如果finally中没有return语句,但是改变了要返回的值,这里有点类似与引用传递和值传递的区别,分以下两种情况,:
1)如果return的数据是基本数据类型或文本字符串,则在finally中对该基本数据的改变不起作用,try中的return语句依然会返回进入finally块之前保留的值。
2)如果return的数据是引用数据类型(比如对象),而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的就是在finally中改变后的该属性的值。
2.声明异常 throws
在异常情况出现的时候,可以使用try catch finally的方式对异常进行处理,除此之外,可以将异常向外抛出
在方法调用过程中,可能存在N多个方法之间的调用,此时假如每个方法中 都包含了异常情况
,那么每个方法中都需要写try catch ,另外一种简单的方式,就是在方法的最外层调用处理一次使用throws的方法,对所有执行过程中的所有方法出现的异常进行一次处理
2.如何判断使用throws 还是 try catch ,最稳妥的方式就是在每个方法中都进行异常处理
最偷懒的方式就是判断整个调用过程中,最外层的调用方法是否有异常的处理,如果有直接使用throws,如果没有那么就使用try catch finally
3. 抛出异常 throw new
4. 自定义异常 :