JAVA异常处理的语句为:try-catch-finally,在该语句中可以包含一个或多个catch语句,可以省略finally语句。 但是,try语句之后至少需要一个catch或finally语句。 JAVA异常处理机制只能处理Throwable类或其子对象
JAVA异常处理可以大致分为两类:
JAVA针对不同的异常类采取不同的处理策略。
类别
处理方式
Error及其子类
Error是一种很难恢复的严重错误,通常不通过程序处理
继承扩展的运行时扩展
RuntimeException表示编程和实现问题,例如数组的越界使用、算术运算异常(例如0运算除外)、空指针异常(即访问未初始化的指针)等。 正确设计和实施的程序不应出现这些异常,解决的策略是纠正错误。运行时间扩展异常不需要被缓存。 即使是th
其他继承Exception类
其他异常通常由不存在文件的、无效的URL等环境因素引起。 这是由于用户的误操作而引起的,例如可通过催促用户进行正确的操作等异常处理来应对。
:现在我们来讨论Error、Exception和RuntimeException的区别。
Error表示非常严重和意外的异常,通常不需要由APP应用程序捕获和处理。
程序必须捕获和处理这些异常,因为除RuntimeException以外的Exception通常是设计或实现的异常,也是编译器可以“感知”的异常。
RuntimeException和Error一样也不需要捕获,即使在方法中throws了RuntimeException,调用方法的语句也不需要catch这样的异常。
也就是说,对于以声明语句returntype method name [ paramlist ] throwsexceptionlist声明的例外,一定会处理exception,但也可以不处理RuntimeException异常。
是否需要捕获,是一句话是否被编译器感知到。 是否需要捕获,是一句话是否被编译器感知到。 是否需要捕获,是一句话是否被编译器感知到。
例如:
import java.io.*;
import java.util.*;
class B{ (
void s () throws RuntimeException{
throw new RuntimeException (;
}
}
public class M{
publicstaticvoidmain (string args [ ] ) ) ) ) )。
{
B b=new B (;
托里
{
b.s (;
}
finally
{
system.out.print(here2);
}
}
}
可以产生结果的here2exceptioninthread ' main ' Java.lang.runtime exception
ATB.s(m.Java:6 ) )。
atm.main(m.Java:18 ) )。
import java.io.*;
import java.util.*;
class B{ (
void s () throws Exception{
throw new Exception (;
}
}
public class M{
publicstaticvoidmain (string args [ ] ) ) ) )。
{
B b=new B (;
托里
{
b.s (;
}
finally
{
system.out.print(here2);
}
}
}
编译时M.java:18:未报告的异常java.lang.Exception; 必须捕获或声明才能抛出
b.s (;
^
1错误