try catch的使用throws的使用
unchecked exception和checked exception的区别
所有异常类型都是 Throwable 类的子类,它包含Exception类和Error类,Exception又包括checked exception和unchecked exception。
unchecked exception:Java编译器不要求对未检查异常一定捕获或抛出,可以不做处理。此类异常通常是在逻辑上有错误,可以通过修改代码避免。在eclipse中(保存即编译)编译后此类异常发生处会报错。
checked exception:Java编译器要求对检查异常必须捕获或抛出,代码逻辑没有错误,但程序运行时会因为IO等错误导致异常,你在编写程序阶段是预料不到的。如果不处理这些异常,程序将来肯定会出错。所以编译器会提示你要去捕获并处理这种可能发生的异常,不处理就不能通过编译
try catch
在ideal中快捷键 ctrl + alt + T;
catch(Exception e){
e.printStackTrace() ;
}
当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;。
printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。(这是白话解释,比较容易理解)
捕获到异常后,如果输出错误信息对应的分别是如图
try catch finally
try中报错,就会执行catch里面的,catch里面可以捕获报错的信息等;一定会执行finally里的;
这个链接说的东西有点意思:https://blog.csdn.net/mxd446814583/article/details/80355572;(这个例子中的第一个例子有点奇怪,为什么catch中return了。最后就不用return了,在我理解来看final应该也要return才行额,经过我的分析因为 finally一定会执行,try finally 和 catch finally 是2个情况,只有其中一种有返回就行了(就像if else一样,一种情况下必须要有返回值),当然fianlly中有需要的话,有返回值也是可以的),补充:只有静态(static)的方法才可以直接被调用;
try catch 和throws 的区别对比
https://blog.csdn.net/dongapple/article/details/80351969
throws exception的意思就是把异常抛给调用它的地方,编译都不通过的
throws 一直抛到抛到顶级的话,就交给jvm处理了。显然这是不好的,一般用try catch 捕捉 调用带有throws exception的方法
关键字 xxx() throws Excepton{},表示此处不处理异常,交由方法调用处处理,就是向上抛出异常
如果将 public void main(String [] args ) throws Exception 主方法将向上抛出异常,给jvm去处理了,此时主方法内的异常 就不需要处理
异常如果一直被throws抛出的话就会被jvm异常处理器处理了,这时jvm会跳出正常运行状态。
所以呢,有异常必须最终在某个地方catch住,以便不让他被jvm异常处理器处理
////throws的作用///////////////////////////////////
声明方法可能回避的异常
有异常被抛出了,就要做处理,所以java中有try-catch
可是有时候一个方法中产生了异常,但是不知道该怎么处理它,那么就放着不管,当有异常抛出时会中断该方法,而异常被抛到这个方法的调用者那里。这个有点像下属处理不了的问题就交到上司手里一样,这种情况称为回避异常
但是这使得调用这个方法就有了危险,因为谁也不知道这个方法什么时候会丢一个什么样的异常给调用者,所以在定义方法时,就需要在方法头部分使用throws来声明这个方法可能回避的异常
void fun()throws IOException,SQLException
{
...
}
这表示 fun方法可能会丢两个异常出来,那么在调用fun的时候就会做好准备,比如可以这样
try
{
fun();
}catch(IOException e)
{
}catch(SQLException e)
{
}
posted on 2019-08-10 09:35 Cherishforchen 阅读(2250) 评论(0) 编辑 收藏 举报