异常:在程序执行过程中发生的不正确情况称为异常。(开放过程中语法错误与逻辑错误不算异常)
分类:
1)Error(错误):Java虚拟机无法解决的严重错误,如JVM系统的内部错误、资源耗尽等。
2)Exception:又分为运行时异常和编译时异常。
注意:
1)运行时异常可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响。
2)编译时异常是必须处理的异常。编译异常常发生在文件、网络、数据库中。
二:异常处理【常用处理方式有两种】
1)try-catch-finally
捕获发生的异常,自行处理
2)throws
将发生的异常抛出,交给调用者来处理,最顶级的处理者就是jvm
【处理机制】
如果没有显示用try-catch,则默认为throw
【try-catch】
快速入门:
public String getName; public static void main(String[] args) { try { Person person = new Person(); person = null; System.out.println(person.getName);//空指针异常 int n1=10; int n2=0; int res=n1/n2;//数字运算异常 } catch (NullPointerException e) { System.out.println("空指针异常="+e.getMessage()); }catch(ArithmeticException e){ System.out.println("算数异常="+e.getMessage()); }catch(Exception e){ System.out.println(e.getMessage()); }finally { System.out.println("无论如何finally语句都会被执行"); } } }
1)如果发生异常,则异常后的代码不会正常执行,直接进入catch块
2)如果没有发生异常,则不会进入catch块内
3)不管是否发生异常都会执行finally
4)也可以进行try-finally,相当于没有捕获异常,程序会崩掉
【throws】
1)我们在处理异常的时候, 通常希望知道这段代码中究竟会出现哪些可能的异常. 我们可以使用 throws 关键字, 把可能抛出的异常显式的标注在方法定义的位置. 从而提醒调用者要注意捕获这些异常
2)throws后面的类型可以是方法中的异常类型,也可以是它的父类
public static int divide(int x, int y) throws ArithmeticException { if (y == 0) { throw new ArithmeticException("抛出除 0 异常"); } return x / y; }
【抛出异常】
1)除了 Java 内置的类会抛出一些异常之外, 程序猿也可以手动抛出某个异常. 使用 throw 关键字完成这个 *** 作.
public static void main(String[] args) { System.out.println(divide(10, 0)); } public static int divide(int x, int y) { if (y == 0) { throw new ArithmeticException("抛出除 0 异常"); } return x / y; }
【throws和throws】
throws:在方法声明处。异常处理的一种方式。后面跟异常类型。
throw:在方法体内。手动生成异常对象的关键字。后面跟异常对象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)