Java异常
异常分为error和Exception
只谈Exception
Exception
Exception分类
uncheckExcetion(运行时异常,编译时不检查)
checkExcetion(编译时异常,编译时检查)
重点处理checkException
如何处理异常?
异常一般都是在某个方法内部产生的
对于这个方法来说 ,可以这么处理
1.抛出异常 (throws /throw)
2.捕获异常(try/catch/finally)
尽管抛出异常,但最终还是要落实到捕获,你不处理,总要有人处理
try/catch/finally
try中放代码
catch(或者多个catch)捕获处理对应异常
finally 最后无论如何都会执行此处代码
throws/throw
先说一下Java的异常抛出机制
当发生异常,异常的方法往往不确定调用方要如何处理异常
于是,只将异常抛给调用方,由调用方决定
如果异常不被处理,
就会被不断抛出至调用方,调用方的调用方,直到main函数
如果还没有被处理的话,将会造成程序停止
throws关键字
声明方法抛出异常,不做处理 ,本方法对于方法内产生的异常
无论是系统产生的,还是自己通过throw产生的
都直接抛给外界方法处理
public void fileopen(String path) throws FileNotFoundException //声明抛出异常
{
File f=new File(path);
OutputStream outputStream=new FileOutputStream(f); //这里会可能抛出异常
}
无论是JVM抛出的异常,还是程序员自己抛出的异常,都必须捕获或者声明抛出到方法外
throw关键字
用于手动抛出异常
不是为了抛出到方法外,而是让自己生成的异常生效
public static void test(int num) throws IOException //即使是自己抛出的也要处理声明,不然会报错
{
if (num==1)
{
throw new IOException(); //这里是手动抛出的异常,使异常生效
}
System.out.println("运行正常");
}
自己创建异常类
继承Exception类即可