Java 异常(exception)
1.概念:Java 异常指Java在运行过程中出现错误。
2.分类:编译异常和运行异常
编译时异常
在编译时报错,运行时通不过(暗示)。
运行时异常
在编译时不会报错,在程序运行过程中会终止程序执行
且将错误信息显示在控制台上。
异常处理方式
1.JVM异常处理方式(默认) 指:自己无法处理,交给JVM (当出现异常时,会终止程序运行,也就是出现异常之后的代码都不会执行)。
2.自己处理异常方式指:自己处理,然后继续运行
JVM异常处理方式(默认)
JVM会将异常信息、异常名称、异常出现位置输出到控制台上
自己处理异常方式
1.try……catch
2.throws
1.try……catch
分为:
(1)try……catch 处理一个异常
(2)try……catch 处理多个异常
格式:
try{
写可能出现异常语句
}catch(异常类型 变量){
写异常提示
}
try……catch处理一个异常:
注意点:只有在try{ }中出现异常时,才会执行catch中内容
try……catch 处理多个异常:
处理多个运行异常通用格式:
方法一:
方法二:
2.throws:
抛出异常(抛出运行时异常和抛出编译时异常)
抛出运行时异常:
抛出编译时异常:
1.有人处理:
2.不处理:继续往上抛(最终抛给方法的调用者)
获取异常信息3种方式:
1.错在哪(出现异常原因):
2.错在哪+异常类型
3.错在哪+异常类型+异常位置
显示结果:第8行出错了
throws和throw区别:
throw定义在方法体内,后面跟对象且throw只能抛出一个异常对象
throws定义在方法声明后,后面可能多个异常类型名称 中间使用,分隔
finally:
一般情况下只要执行了try,finally就会被执行
特例:执行了try,但finally没有执行
若用return提前终止方法,finally还会被执行吗?
答案是:return 终止方法执行 ,在终止方法执行前会执行finally。
finally返回值问题:
注意点:try ……catch 要么都写返回值,要么都不写返回值。
最终返回结果:看return
自定义异常:
思路:
1.定义一个类继承异常
2.抛出一个自定义异常的类名
自定义运行时异常:
RuntimeException 是所有运行时异常父类
自定义编译时异常:
Exception 是所有编译时异常父类
方法一:
方法二:
自定义一个抛出带参数的异常: