Java异常处理:Part 2
来源:互联网 发布:迅雷美女数据库13第1 编辑:程序博客网 时间:2024/05/20 18:01
Java的异常处理21.编译时异常和运行时异常的区别 运行时异常:Exception下的所有RuntimeException及其子类统称运行时异常 编译时异常:Exception下的非运行时异常,称为编译时异常 区别 : 运行时异常我们不作显式处理或可当作编译时异常处理,多数是由于我们的代码不够严谨,如除数为0异常:ArithmeticException 它的父类是RuntimeException,在代码中加除数值判定即可。 编译时异常我们必须做显式处理,否则程序无法通过编译。2.异常类里的常用方法 异常类继承了Throwable里的几个方法: A.String getMessage() 获取异常信息,返回字符串 B.String toString() 获取异常类名和异常信息,返回字符串 C.printStackTrace() 获取异常类名、异常信息和异常出现在程序中的位置 D.printStackTrace(PrintStream s) 将异常内容保存在日志文件中,便于查阅3.Java异常处理方案二:throws(抛出) throws:定义功能方法时,需要把暴露的问题暴露出来让调用者去处理(或自己处理不了),可以抛出 语法格式:throws 异常类名1,异常类名2 它必须跟在方法声明的小括号后面 相当于延迟处理异常,写方法的你不处理,让调用者自己处理。 如果抛出的是运行时异常,调用者都懒得处理,告诉你去修改自己的代码,让它更严谨; 如果抛出的是编译时异常,调用者不处理,他就没法编译通过,他就没法用,必须处理; 不要从main方法里抛给虚拟机 throw:在功能方法内部出现某种情况,程序不能继续运行,需要跳转时,用throw将异常类对象抛出(不是异常类名)4.我们到底该怎样处理异常呢 原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,用throws 区别:后续程序需要继续运行就try;后续程序不需要继续运行就throws 举例:感冒了就自己吃点药就好了,try;吃了好几天药都没好,到医院治疗,throws;没治了,变成Error了 5.finally 被finally控制的语句体一定会执行,除非JVM在这之前退出 作用:用于释放资源,在IO流操作和数据库操作中会见到
package knowledge_basic_02;public class ExceptionDemo2 { public static void method1() { //运行时异常不用作显式处理,也可当编译时异常处理 //之前有自己处理除数为0的运行时异常,实际上不用显式处理,让代码严谨即可 int a=100; int b=0; if(b!=0) System.out.println(a/b); System.out.println("over"); } public static void method2() { //自己处理异常(还是将一个运行时异常当作编译时异常处理) //注意与JVM默认的处理不同,此处over执行了 //try里面抛出一个异常对象,同catch里匹配(传到catch里 ) int a=100; int b=0; try{ System.out.println(a/b); }catch(ArithmeticException e){ e.printStackTrace(); } System.out.println("over"); } public static void method3() { // int a=100; int b=0; if(b!=0) System.out.println(a/b); else throw new ArithmeticException(); System.out.println("over"); } public static void main(String[] args) { // TODO Auto-generated method stub //method1(); //method2(); method3(); }}
method2的结果为:
java.lang.ArithmeticException: / by zero
at knowledge_basic_02.ExceptionDemo2.method2(ExceptionDemo2.java:20)
at knowledge_basic_02.ExceptionDemo2.main(ExceptionDemo2.java:29)
over
method3的结果为:
Exception in thread “main” java.lang.ArithmeticException
at knowledge_basic_02.ExceptionDemo2.method3(ExceptionDemo2.java:36)
at knowledge_basic_02.ExceptionDemo2.main(ExceptionDemo2.java:43)
0 0
- Java异常处理:Part 2
- Java异常处理:Part 1
- TPL - Part 2 异常处理常用方式
- 如何在shell中处理异常(Part 2)
- JAVA异常处理(2)
- Java异常处理(2)
- 源码-Oracle数据库管理-第十六章-异常处理机制-Part 2(自定义异常)
- java异常处理相关 (2)
- java异常处理机制 2
- java -- 异常处理(2)
- Java异常处理机制(2)
- 源码-PL/SQL从入门到精通-第十二章-异常处理机制-Part 2
- 【java】java异常处理
- java异常和异常处理
- Java 异常及异常处理
- java异常与异常处理
- Java异常处理-----自定义异常
- Java异常与异常处理
- 【57.14%】【codeforces 722B】Verse Pattern
- 7天入门php-超全局
- 143. Reorder List
- 循环
- 微信开发简单功能实现
- Java异常处理:Part 2
- 为了另一个国庆
- 数据结构实验之链表八:Farey序列
- 舞伴问题
- mvc构建compser加载和medoo数据类
- 《SRE》读后感
- HTTP协议深入
- 换工作后所想
- 记 2016 CCPC 长春站